Draft changes
Ignore. Writers can keep editing and previewing without filling the social queue.
Watch one Webflow collection, verify every published-item webhook, map your actual CMS fields, and send distinct channel angles into review.

Webflow separates staged content from the live item. This connection listens only for collection_item_published and checks the collection, locale, draft flag, and archive flag again before creating a campaign.
Ignore. Writers can keep editing and previewing without filling the social queue.
Accept once. Map the configured fields and create a campaign that still requires review.
Do not promote. Flag any queued campaign so a person can decide whether to cancel it.
Choose one site, one blog collection, and one published-item event. A site administrator creates the token; the connection requests CMS read access and only the webhook access required for this trigger.
Connector revision 1.0 · Webflow Data API v2 · Last tested 29 August 2026.
curl -X POST "https://api.webflow.com/v2/sites/SITE_ID/webhooks" \
-H "Authorization: Bearer SITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"triggerType": "collection_item_published",
"url": "https://hooks.emelyn.ai/webflow/CONNECTION_ID",
"filter": { "collectionId": "BLOG_COLLECTION_ID" }
}'Minimum permissioncms:read for collection schema and live item checks, plus the trigger’s required webhook scope.
Secret placementThe site-token webhook secret is shown at creation. Store it encrypted; never place it in the destination URL.
Webflow field slugs differ between sites. The setup reads the selected collection schema, asks you to map title, summary, canonical URL, topic, and media, then validates each published payload against that map.
{
"triggerType": "collection_item_published",
"payload": {
"id": "66424365e972c886137a1cf1",
"siteId": "65427cf400e02b306eaa049c",
"collectionId": "664243617fcc8b464b23c4ee",
"cmsLocaleId": "681442a144bb80bd00480fda",
"lastUpdated": "2026-08-29T09:30:00Z",
"isArchived": false,
"isDraft": false,
"fieldData": {
"name": "Five fixes customers actually noticed",
"slug": "five-fixes-customers-noticed",
"summary": "What changed and why it mattered.",
"hero-image": { "url": "https://cdn.example.com/fixes.png" },
"topic": "Product lessons"
}
}
}| Webflow | Emelyn | Use |
|---|---|---|
| payload.id | webflow.item_id | Delivery and duplicate identity |
| payload.collectionId | webflow.collection_id | Confirms the approved collection |
| payload.cmsLocaleId | source_locale | Keeps localized items separate |
| fieldData.name | source_title | Human-readable article title |
| fieldData.summary | source_summary | Short evidence for the first angle |
| fieldData.hero-image.url | source_media | Optional visual reference |
| fieldData.slug | source_url | Combined with the configured collection URL |
The receiver validates x-webflow-signature over the timestamp and body, rejects requests older than five minutes, queues the item by stable ID, and returns HTTP 200 quickly.
Use Webflow’s SDK verification method or HMAC-SHA256 over timestamp:body with the correct signing key.
Reject a timestamp more than five minutes old, even when the signature is otherwise valid.
Use site ID + collection ID + item ID + locale as the stable processing identity.
Return exactly 200 after verification and queueing. Redirects and other statuses count as failures.
Webflow retries three more times, ten minutes apart.Repeated non-200 responses can deactivate the webhook. Emelyn shows the failed delivery, never creates twice from the same item identity, and asks you to reconnect if Webflow deactivates the endpoint. Webflow allows up to 75 webhooks for a trigger type; this connection creates one per selected site and event.
Webflow users describe formatting, field alignment, and publish-state mistakes as the costly part of CMS automation. This guide makes the schema, live state, signature, locale, retry policy, and limits visible.