The event stream needs the Pro or Enterprise plan. Only people who can change workspace settings can set it up.
Choose a destination
Go to Settings → Developers → Event stream and pick one destination. A workspace has one stream.Amazon S3
- Create a bucket, or pick one, in any AWS region.
- Create an IAM user whose only permission is
s3:PutObjecton that bucket and prefix. - Enter the bucket, region, prefix, access key ID and secret access key, then click Save.
dt= and hour= folders are partitions that Athena, BigQuery and Snowflake external tables read directly.
Segment or RudderStack
Enter your data plane URL (for examplehttps://api.segment.io) and a write key for a source you created for InstantCampaign. Each event arrives as a track call:
The call’s
messageId is the event’s id, so Segment and RudderStack drop a repeated delivery. The person is anonymousId: ic_<contact id>. When you turn on Include email addresses, context.traits.email carries the address, so your CDP can merge the events into its own profiles.
HTTPS endpoint
Enter anhttps URL. Each request has Content-Type: application/x-ndjson, one record per line, and these headers:
webhook-id,webhook-timestamp: the batch’s id and the time it was sent.webhook-signature: present when you set a signing secret. It is computed like our webhooks, so the same verification code works.x-instantcampaign-records: how many records the request holds.
2xx once you have stored the batch. Any other answer, or no answer within 30 seconds, means the batch is sent again later.
Record format
Every record is one JSON object on one line:
New fields may be added to a version. A field is never removed or renamed within a version.
Opens and clicks from machines are sent with
isBot: true, not left out, so you can count them your own way. Our dashboard counts only isBot: false.
Choose what to send
- Send every event type sends all of the types above. Turn it off to pick types one by one.
- Include email addresses is off by default. Without it, records carry the contact id and the recipient’s domain, but not the address. Turn it on only if your destination is allowed to hold personal data.
Delivery and failures
Events wait in a queue until your destination accepts them, and are deleted from the queue only then.- Nothing is skipped. Each event is written to the queue in the same database transaction as the send, open or unsubscribe it records.
- Repeats are possible, but each event keeps its
id. If an attempt fails after part of the data arrived, the events are sent again. For S3 the file name stays the same; for Segment and RudderStack themessageIdstays the same; for HTTPS, remove duplicates byid. - Failed deliveries are retried. The wait starts at 30 seconds and grows to 15 minutes.
- After 24 hours of failures the stream pauses. Owners and admins get a notification. Events keep collecting while it is paused. Fix the destination, then click Save and resume.
- The queue holds up to 5 million events. Beyond that, the oldest are dropped and counted under Dropped.
stream.test straight away and reports what your destination answered.
If the workspace moves to a plan without the event stream, the stream stops collecting. Turn it on again after upgrading.