Integrations

Drip: Telltide Seed Address Guide

Place Telltide seeds in Drip campaigns and workflows.

Drip is a tag-based email marketing platform focused on ecommerce. Contacts are called "People." Tags and custom fields are the primary mechanisms for triggering workflows and segmenting audiences. The most important constraint for seed management: workflow triggers are NOT retroactive - if a person already has a tag or already satisfies a condition when the workflow is activated, they do not enter it. The trigger only fires on the transition (when the tag is applied or the condition is first met).

Quick reference

Send typeWhere to add seedsComplexity
Scheduled (Broadcast)Create seed person; ensure they qualify for the broadcast's audience filterLow
Ongoing (Workflow)Create seed person; fire the specific trigger event or apply the trigger tagMedium

1. Scheduled / one-off sends (Broadcasts)

Drip Broadcasts are one-time email sends targeting people who match filter conditions. Seeds must be people in your Drip account and satisfy the broadcast's audience filter at send time.

Where to add seed addresses

The simplest approach: tag seed contacts with telltide-seed. When creating a broadcast, include this tag in the audience filter (OR logic) so seeds always receive the broadcast regardless of the main targeting conditions.

Step-by-step: Create a seed person via UI

  1. Navigate to People in the main nav
  2. Click New Person (or the + button)
  3. Enter the seed email address
  4. Fill in First Name, Last Name, and any other personalization fields
  5. Set the person as active (opted in to receive emails)
  6. Click Save
  7. Apply the tag telltide-seed to the person

Step-by-step: Create a seed person via API

POST https://api.getdrip.com/v2/{account_id}/subscribers
Authorization: Basic {{base64(api_token:)}}
Content-Type: application/json

{
  "subscribers": [
    {
      "email": "seed@example.com",
      "first_name": "Seed",
      "last_name": "Monitor",
      "tags": ["telltide-seed"],
      "custom_fields": {
        "birthday": "1990-04-15"
      },
      "reactivate_if_removed": true
    }
  ]
}

Authentication: HTTP Basic Auth using the API token as the username and an empty string as the password. Encode api_token: (with trailing colon, no password) in Base64.

reactivate_if_removed: true: If the person was previously removed (unsubscribed/deleted), this re-activates them. Include this on all seed creation calls to handle cases where the seed was previously removed from the account.

account_id: Found in your Drip account URL: app.getdrip.com/{{account_id}}/....

Batch endpoint (multiple seeds at once): The subscribers array accepts up to 1,000 records per call. Use this for bulk seed provisioning.

Profile attributes required

Seeds need:

  • Email address
  • Active subscription status (not removed or unsubscribed)
  • Values for any Liquid personalization tags referenced in the email template ({{ subscriber.first_name }}, {{ subscriber.custom_fields.custom_field_name }})

Ensuring seeds receive the same version as real recipients

Broadcast filters: If the broadcast targets a segment (e.g., "purchased in the last 30 days"), the seed must satisfy those conditions OR be included via the tag-based OR condition. Use the telltide-seed tag OR condition approach to ensure inclusion without needing to satisfy behavioral filters.

A/B testing: Drip supports subject line A/B testing in broadcasts. Each variant is sent to a portion of the audience. Seeds may receive only one variant. Use multiple seeds to monitor all variants.

Gotchas

Removed/unsubscribed people cannot receive broadcasts. Drip tracks subscription state per person. A removed person (manually removed, unsubscribed via link, or bounced) does not receive broadcasts. Use reactivate_if_removed: true in API calls to re-activate seed accounts as needed.

Email bounces block future sends. Hard-bounced seed addresses are automatically removed and cannot receive subsequent emails. Use fresh seed addresses that have not previously bounced in your Drip account.


2. Ongoing / automated journeys (Workflows)

Drip Workflows are triggered automation sequences. Each workflow has a single entry trigger. Contacts enter when the trigger condition is first met - not retroactively.

Workflow entry trigger types

TriggerDescriptionSeed approach
A tag is appliedFires when a specific tag is added to a personApply the trigger tag to the seed person
A person subscribesFires when a new person subscribes to the accountCreate a new seed person
An order is placedFires when an order event is received for the personUse Shopper Activity API or test order in store
A cart is created / updated / abandonedFires on cart eventsUse Shopper Activity API or test cart in store
A page is visitedFires on tracked page viewInstall site tracking and visit the page as the seed
A date field matchesFires when a custom date field matches a conditionSet the date field on the seed to match
A person enters a segmentFires when the person first qualifies for a segmentSet attributes to satisfy segment conditions
A person exits a segmentFires when the person leaves a segmentChange attributes to disqualify the person
A custom event occursFires on a developer-defined eventFire the event via Events API

Creating trap profiles per journey type

Welcome / onboarding (Person subscribes trigger)

  • Trigger: "A person subscribes" - fires when a new person is added to the account
  • Seed requirements: Email address, must not already exist in the account
  • How to trigger: Create a new seed person via UI or API. The trigger fires for the creation event.
  • Constraint: The trigger is NOT retroactive. If the seed already exists, adding them to the account again does not re-trigger the workflow. Use a new email address for each welcome workflow test cycle.

Abandoned cart (Cart is abandoned trigger)

  • Trigger: "A cart is abandoned" - fires when a cart update event is received and no order is placed within the configured time window (typically 1 hour)
  • Seed requirements: Email address, active subscription status
  • For connected Shopify: Initiate a real checkout using the seed email address and abandon before completing
  • Via Shopper Activity API (non-Shopify):

First, create or update the seed person (if they don't exist yet), then track the cart:

POST https://api.getdrip.com/v3/{account_id}/shopper_activity/cart
Authorization: Basic {{base64(api_token:)}}
Content-Type: application/json

{
  "provider": "my_store",
  "occurred_at": "2026-04-15T10:00:00Z",
  "cart_id": "CART-TEST-001",
  "cart_url": "https://yourstore.com/cart",
  "grand_total": "95.00",
  "total_discounts": "0.00",
  "currency": "USD",
  "email": "seed@example.com",
  "items": [
    {
      "product_id": "SKU-123",
      "product_variant_id": "SKU-123-DEFAULT",
      "sku": "SKU-123",
      "name": "Widget Pro",
      "price": "95.00",
      "quantity": 1,
      "product_url": "https://yourstore.com/products/widget",
      "image_url": "https://yourstore.com/img/widget.jpg"
    }
  ]
}

Wait the configured abandonment window (typically 1 hour). If no order is placed, the workflow triggers.

Browse abandonment

  • Trigger: "A page is visited" with a filter on product page URL pattern
  • Seed requirements: Email address, active subscription status, site tracking JavaScript installed
  • How to trigger: The site tracking script must be installed on your store. The seed person must be identified (tracked by email) in the browser before visiting the product page. Browser-based navigation is the most reliable approach.
  • Alternative via Events API:
POST https://api.getdrip.com/v2/{account_id}/subscribers/{subscriber_id}/events
Authorization: Basic {{base64(api_token:)}}
Content-Type: application/json

{
  "events": [
    {
      "action": "Viewed Widget Pro",
      "properties": {
        "product_id": "SKU-123",
        "product_url": "https://yourstore.com/products/widget"
      }
    }
  ]
}

If the workflow trigger is a custom event rather than a native page visit, use the Events API instead.

Winback / re-engagement (Date field matches trigger)

  • Trigger: "A date field matches" - fires on/around a date stored in a custom contact field (e.g., last_purchase_date)
  • Seed requirements: Email address, last_purchase_date custom date field set to a date in the trigger window
  • Date format: YYYY-MM-DD for all date custom fields in Drip API calls
  • Date field trigger behavior: Drip schedules evaluation of date-based triggers approximately 30 minutes in advance of the trigger time. Set the seed's date to ensure it falls within the configured window.

Set the custom date field on the seed:

POST https://api.getdrip.com/v2/{account_id}/subscribers
Authorization: Basic {{base64(api_token:)}}
Content-Type: application/json

{
  "subscribers": [
    {
      "email": "seed@example.com",
      "custom_fields": {
        "last_purchase_date": "2025-01-15"
      }
    }
  ]
}

Post-purchase (Order placed trigger)

  • Trigger: "An order is placed" - fires when an order event is received for the person
  • Seed requirements: Email address, active subscription status
  • Via Shopper Activity API:
POST https://api.getdrip.com/v3/{account_id}/shopper_activity/order
Authorization: Basic {{base64(api_token:)}}
Content-Type: application/json

{
  "provider": "my_store",
  "occurred_at": "2026-04-15T10:00:00Z",
  "action": "placed",
  "order_id": "TEST-ORD-001",
  "order_url": "https://yourstore.com/orders/TEST-ORD-001",
  "grand_total": "149.99",
  "currency": "USD",
  "email": "seed@example.com",
  "items": [
    {
      "product_id": "SKU-123",
      "product_variant_id": "SKU-123-DEFAULT",
      "sku": "SKU-123",
      "name": "Widget Pro",
      "price": "149.99",
      "quantity": 1
    }
  ]
}

Birthday / anniversary (Date field matches trigger, annually)

  • Trigger: "A date field matches" on the birthday custom date field > "Anniversary" (fires annually on the stored month/day)
  • Seed requirements: Email address, birthday custom field (Date type) set on the person
  • Date format: YYYY-MM-DD
  • Set the birthday field:
POST https://api.getdrip.com/v2/{account_id}/subscribers
{
  "subscribers": [
    {
      "email": "seed@example.com",
      "custom_fields": {
        "birthday": "1990-04-15"
      }
    }
  ]
}
  • Trigger schedules approximately 30 minutes in advance. Drip evaluates birthday-type date triggers slightly before the scheduled time. For same-day testing: set the seed's birthday to today's date. The trigger fires on today's evaluation cycle.

How re-entry works in Workflows

Workflow re-entry requires the person to first exit the workflow. A person already in a workflow does not re-enter it when the trigger fires again. To reset for repeated testing:

  1. Navigate to the person's profile in Drip
  2. Go to the Workflows & Email Series section
  3. Find the workflow and click Restart to remove them and allow re-entry on the next trigger

Or: remove the trigger tag, wait for exit, then re-apply the tag to re-trigger.


How to reset seeds for repeated workflow testing

Tag-triggered workflows: Remove the tag, wait for the person to exit the workflow, then re-apply the tag.

Event-triggered workflows: Fire the event again (if re-entry is permitted). Check workflow settings for re-entry behavior.

Date field workflows: Change the seed's date field to a future date, then change it to today/the target date to re-trigger.

Create a new seed person: Use a different email address or modify the seed's email to a new value. The new person triggers the workflow as if starting fresh.


3. Platform-specific considerations

API options

Create or update subscriber:

POST https://api.getdrip.com/v2/{account_id}/subscribers
Authorization: Basic {{base64(api_token:)}}

Accepts up to 1,000 records in the subscribers array.

Get subscriber by email:

GET https://api.getdrip.com/v2/{account_id}/subscribers/{email_or_id}

Apply tags:

POST https://api.getdrip.com/v2/{account_id}/tags
{
  "tags": [{"email": "seed@example.com", "tag": "telltide-seed"}]
}

Remove tags:

DELETE https://api.getdrip.com/v2/{account_id}/subscribers/{id}/tags/{tag}

Track custom event:

POST https://api.getdrip.com/v2/{account_id}/subscribers/{id}/events
{
  "events": [{"action": "event_name", "properties": {...}}]
}

Shopper Activity - cart:

POST https://api.getdrip.com/v3/{account_id}/shopper_activity/cart

Shopper Activity - order:

POST https://api.getdrip.com/v3/{account_id}/shopper_activity/order

API token location: Your Drip account > User settings > API token. The token is used as the HTTP Basic Auth username with an empty password.

Rate limits

ScopeLimit
General API3,600 requests per hour
Batch subscriber upsert1,000 records per request

HTTP 429 when exceeded. Implement exponential backoff.

Duplicate contact handling

Email address is the unique identifier. Calling POST /v2/{account_id}/subscribers with an existing email updates the existing record (upsert behavior). No duplicates are created.

If the person was previously removed (unsubscribed/deleted), include reactivate_if_removed: true in the payload to reinstate them. Without this flag, a removed person cannot be re-subscribed via the API.

Platform-specific terminology

Drip termWhat it means
Person / SubscriberA contact record in Drip (called "person" in UI; "subscriber" in API).
WorkflowA triggered automated email sequence.
BroadcastA one-time email send.
TagA label applied to a person. Primary trigger mechanism and segmentation tool.
Custom FieldA contact-level data field (text, number, date, boolean) for personalization and workflow triggers.
SegmentA dynamic filter-based group of people used for targeting.
Shopper Activity APIDrip's v3 API for tracking cart and order events from non-native ecommerce integrations.
Events APIDrip's v2 API for tracking custom behavioral events for a person.
Reactivate if removedAPI parameter that re-activates a previously removed (unsubscribed) person. Required for re-adding removed seeds.

Known limitations and workarounds

Workflow triggers are not retroactive. If a person already has the trigger tag when the workflow activates, they do not enter. Remove the trigger condition from the seed, activate the workflow, then apply the trigger condition to the seed.

reactivate_if_removed: true is required to re-subscribe removed people. Without this flag, a removed person's re-addition silently fails - no error is returned but the person remains inactive. Always include this flag in seed creation and update calls.

Cart abandonment trigger requires the abandonment window to pass. After firing a cart event, the workflow does not trigger immediately - it waits the configured abandonment window (typically 1 hour). Plan seed monitoring around this delay.

Site tracking requires browser identification. Browse abandonment monitoring cannot be fully simulated via API alone if the workflow uses the native "page visited" trigger. The site tracking JavaScript must be installed and the browser session must be linked to the seed email.

Date field trigger fires approximately 30 minutes in advance. Drip pre-computes date-based triggers before the actual scheduled time. This can cause the seed to enter workflows slightly earlier than expected.

Start monitoring your Drip sends

Place a Telltide seed in your Drip audience, and we will tell you when an expected email did not land.

Start free