Actito
Datafly Signal delivers events to Actito server-to-server using Actito’s profile API. Instead of running an Actito tracking script in the browser, Signal upserts the visitor’s Actito profile from your own first-party data, keeping contact records current for Actito email campaigns, journeys, and automation scenarios.
Why route Actito through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Actito even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- One consent decision governs every destination. Actito is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Before configuring Actito in Signal, you need an Actito license, an API user, and a destination profile table.
Step 1: Create an API user
- In the Actito portal, the license administrator goes to the API user management area.
- Create a new API user dedicated to Signal (for example “Datafly Signal”).
- Grant it write access on the entity and profile table you want Signal to feed.
- Copy the generated API Key — an opaque string such as
qhdfbvdh747R49FRHrthqhdfbvdh74. You will paste this into Signal.
Step 2: Note your entity and profile table
- In the Actito Dashboard, note your entity name (the license/database identifier).
- Open the profile table you want to keep in sync and note its exact name (it is case-sensitive).
- Confirm the table’s unique key is the email attribute, and that it has attributes for the data Signal will write (for example
firstName,lastName,phone,language, and a marketing-consent attribute).
Actito stores profile attributes in cleartext because the data lives in your own Actito tenant (your CRM). Email, phone, and name are not hashed for Actito, unlike the match keys sent to advertising platforms.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
entity | Yes | Your Actito entity name, exactly as shown in the Dashboard. |
profile_table | Yes | The destination profile table name (case-sensitive). |
api_key | Yes | The API Key for your Actito API user. |
access_token | No | An access token from GET https://api.actito.com/auth/token. See the callout below. |
newsletter_subscription | No | The Actito subscription that newsletter_subscribed sets to true and newsletter_unsubscribed sets to false. |
Actito tokens last 15 minutes. Signal does not yet exchange the API key for a token itself (#1497), so the integration sends the pasted access_token and stops authenticating when it expires. Treat the integration as preview-only until #1497 ships.
Management UI Setup
Add the integration
Go to Integrations > Add Integration > Actito.
Choose a preset
Select the Default preset — page views plus identify-driven profile enrichment (email, name, phone, language, and marketing consent).
Enter your credentials
Enter your entity, profile_table, and api_key.
Select consent categories
Select the consent category that gates marketing (typically marketing).
Save
Click Save to activate the integration.
API Endpoint
PUT https://api.actito.com/profiles/v5/entities/{entity}/profile-tables/{profile_table}/profiles
Authorization: Bearer {accessToken}Profiles API V5 creates the profile, or updates the one whose unique key (normally emailAddress) matches. The V4 profile API was deprecated in January 2025 with end of service at the end of Q1 2026; Signal uses V5 from blueprint 0.2.0.
Identity Signals
Actito profiles are keyed on the email address. Call datafly.identify() when a user logs in, registers or submits a form:
datafly.identify("user-123", {
email: "jane.doe@example.com",
first_name: "Jane",
last_name: "Doe"
});| Source | Actito field | Normalisation |
|---|---|---|
traits.email | attributes.emailAddress | trimmed, lower-cased; required (plain text: it is the table’s unique key and the address Actito sends to) |
traits.first_name | attributes.firstName | as provided |
traits.last_name | attributes.lastName | as provided |
context.locale | attributes.motherLanguage | first two letters, upper-case (fr-BE becomes FR) |
| event time | dataCollection.date | ISO 8601, with source “Datafly Signal” and way “website” |
Event Mapping
The Default preset updates the profile on identity events only; page views and other behavioural events are not profile updates and are not sent.
| Signal event | Behaviour |
|---|---|
identify, sign_up, login | Create or update the profile |
newsletter_subscribed | Also sets the configured subscription to true |
newsletter_unsubscribed | Also sets the configured subscription to false |
Example: newsletter sign-up
{
"attributes": {"emailAddress": "jane.doe@example.com", "firstName": "Jane", "lastName": "Doe", "motherLanguage": "EN"},
"subscriptions": {"Newsletter": true},
"dataCollection": {"date": "2026-09-23T10:00:00.000Z", "source": "Datafly Signal", "way": "website"}
}Add more attributes by mapping them to attributes.<name>; the name must exist on the profile table, or Actito rejects the call with 400.
Testing Your Integration
Trigger an identify
On a test page with Signal installed, call datafly.identify() with a test email, then datafly.track("sign_up").
Check the Signal event debugger
In the Management UI, open the Event Debugger for the Actito integration and confirm the outgoing payload contains email and the expected attributes, and that Actito returned 200 OK.
Verify in Actito
In the Actito Dashboard, open your profile table and search for the test email. The profile should appear (or be updated) with the attributes Signal sent.
Troubleshooting
| Problem | Solution |
|---|---|
401 Unauthorized | The access token expired or the API Key is wrong. Re-check the api_key value; Signal refreshes the 15-minute token automatically. |
403 Forbidden | The Actito API user lacks write access on this entity/table. Grant write permission in the Actito portal. |
404 Not Found | The entity or profile_table name is wrong (names are case-sensitive). |
400 Bad Request | The payload contains an attribute the table doesn’t define, or the email is missing. Confirm the table’s attributes match the mappings. |
| Profile not updating | Confirm the table’s unique key is email and that allowUpdate behaviour is enabled (Signal sets it). |
| Wrong API host | Some Actito licenses are on a regional host. Confirm your base host is api.actito.com. |