Attentive + PostPilot Direct Mail Setup
Connect Attentive to PostPilot and automatically send personalized postcards to your customers - no manual exports, no ongoing effort.
How it works
Attentive holds your customer data, including mailing addresses synced from Shopify. Using an Attentive Journey with a webhook action, you can automatically push customers into PostPilot's API. Once the contacts are received, you create a segment in PostPilot to group them, then set up an automated campaign that continuously mails new recipients as they flow in.
End-to-end flow (once live, this runs automatically):
Attentive Journey Triggers → Webhook Fires to PostPilot API → Address Verified → Contact Enters Segment → Postcard Mailed
What you'll need
- A PostPilot account
- An Attentive account connected to your Shopify store
- An Attentive segment or journey you want to use as the trigger
Step-by-step guide
Step 1: Create an API connection in PostPilot
- Log in to PostPilot and navigate to Integrations → API Connections.
- Click New API Connection and give it a descriptive name (e.g., "Attentive" or "Attentive Winback").
- Once created, click the clipboard icon to copy the full endpoint URL from the connection detail page — this contains your unique API key.
- Keep this URL secure — Attentive will use it to send customer data to PostPilot.
Step 2: Set up a webhook in Attentive
- In Attentive, go to Journeys → Create Journey.
- Choose a trigger:
- Select the event or segment that should send customers to PostPilot (e.g., "Added to Segment", "Custom Event", "Made a Purchase").
- Add any filters to narrow the audience (e.g., VIP customers only, order value above a threshold).
- Add a Webhook step:
- In the journey builder, add a Send Webhook action.
- URL: Paste the full endpoint URL from your PostPilot API connection. This is the same one you copied in Step 1 (the URL below is an example).
- Method:
POST - Headers: Add one header — Key:
Content-Type, Value:application/json - Body: Paste the JSON body below, using Attentive's dynamic variables.
- Activate the journey when ready.
Webhook URL
https://api.postpilot.com/v1/{YOUR_CONNECTION_KEY}/api_full_contact
Request body — JSON
{
"reference_id": "",
"email": "",
"firstname": "",
"lastname": "",
"line1": "",
"line2": "",
"city": "",
"state": "",
"postal_code": "",
"country": "",
"custom_1": "your_unique_title_here",
"custom_2": "",
"custom_3": ""
}
Note: The exact variable names for subscriber address fields may vary depending on how your Attentive account is configured and how address data is synced from Shopify. Check Attentive's dynamic variables documentation or your subscriber profiles to confirm the correct field names before launching.
Field reference
| Field | What it does |
|---|---|
reference_id |
The customer's Attentive subscriber ID. Prevents duplicates — if the same customer triggers the journey again, their record is updated rather than duplicated. |
firstname / lastname |
Pulled automatically from the Attentive subscriber profile. |
line1 → country |
The customer's mailing address from their Attentive profile (synced from Shopify). |
custom_1 |
A unique title to identify this specific journey. Choose something descriptive (e.g., vip_winback, high_spenders, post_purchase_30d). This exact value is what you'll use in Step 3 to create a matching segment — it must be consistent. Each journey should have a different custom_1 value. |
custom_2 |
Optional additional data to print on the postcard (e.g., discount amount, loyalty points). Leave blank if not needed. |
custom_3 |
Optional additional personalization (e.g., VIP tier, product name). Leave blank if not needed. |
Step 3: Create a segment in PostPilot
- From the API connection page, click Create Segment.
- Add a filter: Custom 1 equals the unique title you entered in the
custom_1field in Step 2 — it must match exactly. - Save. This segment will include all contacts pushed from Attentive with that title.
Tip: If you have multiple Attentive journeys sending to PostPilot, create a separate segment for each one by matching the unique custom_1 title from each journey.
Step 4: Test the integration
- In Attentive, trigger the journey for a test subscriber (or add a test profile to the triggering segment).
- Verify the webhook fires successfully — Attentive shows webhook delivery status in the journey analytics.
- Wait for the contact to be processed in PostPilot. Contacts go through address verification before appearing in the segment, so this is not instant (3–5 hours).
- Refresh the segment count in PostPilot to confirm the contacts appear.
Step 5: Create an automated campaign in PostPilot
- In PostPilot, go to Campaigns → Create Campaign.
- Select Automated as the campaign type.
- Choose the segment you just created as the audience.
- Design your postcard and use merge tags for personalization:
— Customer's first name— Any additional value you sent (if used)— Any additional value you sent (if used)
- Set the campaign Live. PostPilot will automatically mail new recipients as they enter the segment from Attentive.
Once the automated campaign is live, the flow is fully hands-off: Attentive pushes new contacts → PostPilot receives and verifies the address → the contact enters the segment → the automated campaign mails them a postcard.
Tips and best practices
| Tip | Details |
|---|---|
| Address data | Address data comes from Shopify — Attentive syncs customer addresses from Shopify. Make sure the subscribers you're targeting have address data on their profiles. |
Use reference_id consistently |
Always use the Attentive subscriber ID so repeat triggers update the existing record rather than creating duplicates. |
| One journey per campaign type | Create separate Attentive journeys, PostPilot segments, and automated campaigns for each use case using different custom_1 values. |
| Timing expectations | Contacts are not available instantly after the webhook fires. They go through an address verification pipeline before appearing in the segment (3–5 hours). |
| No rate limit concerns | Typical Attentive segment volumes are well within PostPilot's API limits. |
| Segment naming | Use clear, consistent custom_1 values so your PostPilot segments stay organized as you scale to multiple journeys. |
Alternative option: No mailing address? Use email match.
If your Attentive subscribers don't have mailing addresses, use the email contact endpoint instead. PostPilot's MailMatch will find the customer's physical address from their email. Available for US addresses only.
Webhook URL — email endpoint
https://api.postpilot.com/v1/{YOUR_CONNECTION_KEY}/api_email_contact
Request body — JSON
{
"email": "",
"fullname": " ",
"custom_1": "your_unique_title_here"
}
Questions? Reach out to your PostPilot account team.