Iterable
Prerequisites
- An Iterable account with API key access
- A standard API key (read/write) from Iterable > Settings > API Keys
liftstack needs permission to read segments and lists, read and write profile properties, create and update templates, and read engagement events. Your standard API key must have read/write access to support all of these operations.
Connecting Iterable
- In liftstack, go to Settings > Integrations.
- Click Connect Platform.
- Select the Iterable tab.
- Fill in:
- Connection name: a friendly label (e.g. “Production Iterable” or “Staging”). This helps you tell connections apart if you have more than one.
- API key: your Iterable standard API key. Masked as you type.
- Webhook secret (optional but recommended): a shared secret for validating incoming webhooks. Required if you want to receive engagement events.
- Click Save.
liftstack will store your credentials securely and redirect you to the connections list. You should see your new connection with an “Active” badge.
After saving, the connection card on the integrations page will display your webhook URL. Copy this URL: you will need it to set up event tracking in Iterable (see the webhook setup section below).
Webhook setup
Iterable sends engagement events (clicks, opens, conversions, unsubscribes) to liftstack via webhooks. You need to configure this in Iterable after creating your connection in liftstack.
- Copy your webhook URL from the liftstack integrations page (shown on the connection card after saving).
- In Iterable, go to Settings > Webhooks.
- Add a new webhook endpoint.
- Set the URL to your liftstack webhook URL.
- If you entered a webhook secret, configure the signing header accordingly.
- Enable the relevant event types.
How it works
liftstack writes variant assignments as a custom property (lf_assignments) on each user profile in Iterable. liftstack then generates a conditional template in Handlebars that renders the right variant per recipient automatically. You do not need to write any template code yourself. Engagement events flow back to liftstack via the webhooks you configured above.
All API calls happen during the campaign wizard steps, not at send time. When you hit send in Iterable, the email renders using the pre-written profile property. There is zero additional latency at send time.
Testing your connection
After creating a connection, you can verify it works:
- Go to Settings > Integrations.
- Find your connection in the list.
- Click the Test button on the connection card.
liftstack will make a test API call to Iterable. If successful, a green “Connected” badge appears. If something is wrong, you will see an error message explaining the issue (e.g. “Invalid API key”, “Unauthorized”).
Testing is non-destructive: it only verifies that your credentials are valid and have the necessary permissions. It does not create, modify, or delete anything on your platform.
Rate limits and timing
liftstack includes built-in rate limiting that respects Iterable’s published API limits. You do not need to configure anything.
For the property writeback step, liftstack uses Iterable’s bulk user update endpoint. For a large audience of 500,000 profiles, expect the writeback to take 10 to 20 minutes. For smaller audiences (under 50,000), the writeback typically completes in under 5 minutes.
If Iterable returns a rate limit response (HTTP 429), liftstack reads the Retry-After header and waits before continuing. The writeback simply takes longer rather than failing.
Security
Your Iterable credentials are never stored in plain text. All credentials are encrypted at rest using Fernet symmetric encryption with per-workspace derived keys. All API calls between liftstack and Iterable use HTTPS/TLS. Only workspace Owners and Admins can view, edit, or create integrations. Members can use integrations (e.g. selecting a connection when creating a campaign) but cannot view or modify credentials.
Troubleshooting
”Connection test failed” or “Invalid API key”
- Double-check that you copied the full API key with no extra spaces.
- Verify the key is a standard API key with read/write access.
- Some platforms invalidate old API keys when you generate new ones. Make sure the key you entered is the current active key.
Events are not appearing
- Check that your webhook is configured correctly in Iterable. Verify the webhook URL matches what liftstack shows on the connection card.
- Check the Events page for the connection. If you see events arriving but they are the wrong type, use Configure Event Types to adjust which events are processed.
Webhook returning 403 errors
This usually means the webhook secret does not match. Verify that the secret you configured in Iterable matches the secret you entered in liftstack when creating the connection.
Audience sync is slow or timing out
For very large segments (500,000+), the sync can take 15 to 30 minutes. This is normal. If the sync fails, check that your API key has permission to read segments and profiles.
Profile writeback shows failures
The campaign wizard shows how many profiles succeeded and how many failed during writeback. Failures are typically caused by temporary API errors. You can re-trigger the writeback step from the campaign wizard. The operation is idempotent (writing the same property value twice is harmless), so it safely re-processes all profiles from the beginning. If failures persist, check Iterable’s API status page for outages or degraded performance.