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

  1. In Segment, open Connections → Sources → Add source.
  2. Choose HTTP API (or reuse an existing source you want survey events to flow through).
  3. Open the source's API keys tab and copy the Write Key.

2. Create the integration

  1. Open Integrations and click New integration.
  2. Under Data out, choose Segment.
  3. Click Continue.
  4. On the detail page, paste the Write Key from step 1.
  5. Pick the Destination endpoint that matches your Segment region:
    • Global: https://api.segment.io
    • EU: https://events.eu1.segmentapis.com or https://eu1.api.segmentapis.com
  6. Click Save configuration.

Survey events start flowing on the next response.

Event payload

We emit three flow lifecycle events:

Event nameWhen it fires
Flow ViewedA survey was shown to a user.
Flow DismissedThe user dismissed a survey without submitting.
Response SubmittedThe 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:

FieldAlways sent?Notes
eventAlwaysLifecycle event name, after any rename you configured.
userIdWhen availableOmitted if the user has no userId yet.
anonymousIdAlwaysStable per user where possible.
messageIdAlwaysStable per event. Use this for dedupe in downstream tools.
timestampAlwaysWhen the event occurred, in ISO 8601.
context.page.pathWhen availablePage the event happened on.
context.page.referrerWhen availableReferrer at the time of the event.
context.localeWhen availableBrowser locale, e.g. en-US.

Inside properties:

PropertyAlways sent?Notes
app_idAlwaysYour app identifier.
organization_idAlwaysYour organization identifier.
survey_idWhen availableThe survey the event relates to.
response_idWhen availableThe response the event relates to (set on Response Submitted).
traitsWhen availableProfile traits known at the time, e.g. email.
identitiesAlwaysThe identifiers we resolved against.
referencesAlwaysInternal 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 messageId per event so Segment can dedupe — don't strip or rewrite it in a relay.

Next