Segment as a destination
Send survey events from getuserfeedback.com into Segment so every downstream tool can pick them up.
- Last reviewed
Segment as a destination
Use this when survey responses should land in Segment alongside the rest of your product activity, so any downstream destination — warehouse, BI, CRM — picks them up automatically.
Every survey response and survey lifecycle event arrives in Segment as a
track call against the same identity Segment already has for the user.
1. Get a Segment write key
- In Segment, open Connections → Sources → Add source.
- Choose HTTP API (or reuse an existing source you want survey events to flow through).
- Open the source's API keys tab and copy the Write Key.
2. Create the integration
- Open Integrations and click New integration.
- Under Data out, choose Segment.
- Click Continue.
- On the detail page, paste the Write Key from step 1.
- Pick the Destination endpoint that matches your Segment region:
- Global:
https://api.segment.io - EU:
https://events.eu1.segmentapis.comorhttps://eu1.api.segmentapis.com
- Global:
- Click Save configuration.
Survey events start flowing on the next response.
Event payload
We emit three flow lifecycle events:
| Event name | When it fires |
|---|---|
Flow Viewed | A survey was shown to a user. |
Flow Dismissed | The user dismissed a survey without submitting. |
Response Submitted | The user submitted a response. |
You can rename or disable each event in the Events section of the
integration detail page — match your own naming convention (e.g.
survey_responded), or turn off events you don't want forwarded.
Each enabled event arrives in Segment as a track call:
{"event": "Response Submitted","userId": "user_123","anonymousId": "anon_abc","messageId": "evt_…","timestamp": "2026-05-13T10:14:00.000Z","context": {"page": { "path": "/checkout" },"locale": "en-US"},"properties": {"response_id": "resp_…","survey_id": "srv_…","app_id": "app_…","organization_id": "org_…","traits": { "email": "user@example.com" }}}See Events for more on the event shape and how to send your own.
Properties we send
Top-level fields on the track call:
| Field | Always sent? | Notes |
|---|---|---|
event | Always | Lifecycle event name, after any rename you configured. |
userId | When available | Omitted if the user has no userId yet. |
anonymousId | Always | Stable per user where possible. |
messageId | Always | Stable per event. Use this for dedupe in downstream tools. |
timestamp | Always | When the event occurred, in ISO 8601. |
context.page.path | When available | Page the event happened on. |
context.page.referrer | When available | Referrer at the time of the event. |
context.locale | When available | Browser locale, e.g. en-US. |
Inside properties:
| Property | Always sent? | Notes |
|---|---|---|
app_id | Always | Your app identifier. |
organization_id | Always | Your organization identifier. |
survey_id | When available | The survey the event relates to. |
response_id | When available | The response the event relates to (set on Response Submitted). |
traits | When available | Profile traits known at the time, e.g. email. |
identities | Always | The identifiers we resolved against. |
references | Always | Internal references for tying the event back to other surfaces. |
Identity
Each event carries the userId and anonymousId getuserfeedback.com resolved
during identity stitching. If you also set up
Segment as a source, identities round-trip
cleanly between the two systems.
Delivery and retries
If Segment returns a retryable error (5xx, 429, or a transient network failure), we retry the event with exponential backoff: 1 minute, 2, 4, 8, 16, 32, 64 minutes, then a final attempt up to 6 hours later. After 8 attempts an event stops retrying.
Permanent errors (4xx like an invalid Write Key) fail immediately without
retries. Each event has a stable messageId, so retries are safe even if a
previous attempt was partially delivered.
What can break
- No events show up in Segment. Confirm the Write Key matches the source you're inspecting in Segment. Each source has its own debugger.
- Wrong region. Pick an EU endpoint for EU workspaces. Segment does not forward traffic across regions.
- Integration paused. Paused integrations don't deliver. Resume from Integrations.
- Events look duplicated. We set a stable
messageIdper event so Segment can dedupe — don't strip or rewrite it in a relay.