Appcues
Datafly Signal sends product-adoption events and profile properties for identified users to Appcues through its HTTP API, for flow, checklist and survey targeting.
The Appcues user id is part of the request path; Signal fills it per event from the user ID the preset maps (path-encoded), so only identified users are sent. Confirm the first requests against your Appcues account.
Why route Appcues through Datafly Signal
- Events arrive when the browser cannot send them. Server-side delivery is not stopped by ad blockers, tracking prevention or a page unload.
- One consent decision governs every destination. The integration is gated by the same consent state as the rest of your stack.
Prerequisites
- Your Appcues account id.
- The site identifying users to Appcues with the same user id Signal sees as
user_id(an opaque CRM id, not an email address: it travels in the URL).
Configuration
| Field | Required | Description |
|---|---|---|
account_id | Yes | Your Appcues account ID. Found in Studio under Settings > Installation, or in the embed snippet (AppcuesSettings / the numeric ID in the loader URL). Used in the activity API URL path: /v1/accounts/{account_id}/users/{user_id}/activity. |
Configure in Signal
Add the integration
Go to Integrations > Add Integration > Appcues.
Choose a preset
SaaS.
Enter the configuration
Fill in the fields in the table above.
Select consent categories
Choose the categories that gate product analytics for your product.
Save
Signal delivers the next matching event.
API Endpoint
POST https://api.appcues.com/v1/accounts/ACCOUNT_ID/users/USER_ID/activity
Content-Type: application/jsonNo Authorization header is documented. Body: events (name, timestamp, attributes) and profile_update.
Identity Signals
| Signal | Sent as | Notes |
|---|---|---|
| User id | URL path | The Signal user_id. Anonymous visitors are not sent. |
| Profile properties | profile_update | Identify traits: email (plain text, trimmed and lower-cased: Appcues personalises flows with the profile), name, company, plan, role, created_at. |
Event Mapping
SaaS preset (saas)
Product-adoption events for Appcues targeting of flows, checklists and surveys: sign-up, login, onboarding, feature use, trial and subscription lifecycle, each with its documented attributes, plus the identify traits as profile_update. Identified users only: the Appcues user id is the Signal user_id, which must be the id the site passes to Appcues.identify(); anonymous visitors are not sent (an anonymous id would create an Appcues profile the browser session never joins, and profiles are billed). The user id travels in the URL path, so it must be an opaque CRM id, never an email address. profile_update.email is sent in plain text because Appcues stores it on the profile for targeting and email, as the site’s own Appcues.identify() call does. CANNOT DELIVER YET: the delivery driver does not resolve the per-event {{user_id}} path token (#1283).
| Signal event | Sent as | Enabled |
|---|---|---|
page | Page Viewed | Off by default |
sign_up | Signed Up | Yes |
login | Logged In | Yes |
onboarding_completed | Onboarding Completed | Yes |
feature_used | Feature Used | Yes |
trial_started | Trial Started | Yes |
trial_converted | Trial Converted | Yes |
subscription_started | Subscription Started | Yes |
subscription_cancelled | Subscription Cancelled | Yes |
To customise, edit the integration’s Field Mappings in the Management UI.
Example: a subscription start
What Signal sends (rendered from the preset):
POST https://api.appcues.com/v1/accounts/12345/users/%7B%7Buser_id%7D%7D/activity{
"events": [
{
"attributes": {
"billing_cycle": "monthly",
"currency": "GBP",
"plan_id": "pro",
"plan_name": "Pro",
"revenue": 49
},
"name": "Subscription Started",
"timestamp": 1758500000
}
],
"profile_update": {
"company": "Acme",
"created_at": "2026-01-02T03:04:05Z",
"email": "neill@example.com",
"first_name": "Neill",
"last_name": "Mcfixture",
"name": "Neill Mcfixture",
"plan": "pro",
"role": "admin"
},
"user_id": "crm-user-7"
}Testing
Send a test event
Trigger the event on your site, or replay one from Signal’s event debugger.
Check the response
Confirm a 2xx response and check the user’s profile in Appcues Studio.
Troubleshooting
| Problem | Solution |
|---|---|
| Requests fail with 404 | The account ID setting is wrong, or the event had no user ID (the preset sends identified users only). |
Limitations
- Page views are off by default: the Appcues SDK records them.