Skip to main content

Marketing blasts — user guide

This guide walks marketing managers through the full Pipelinq marketing campaign workflow: building a rule-based segment, authoring a compliant template, scheduling and sending the blast, running an A/B variant test, and monitoring delivery and revenue attribution after the send.

A Dutch translation of this guide is available at marketing-blasts.nl.md.

At a glance

You want to …Open …
Define an audienceMarketing → Segments
Author an email/SMS bodyMarketing → Templates
Send a campaignMarketing → Blasts → New blast
Watch a send unfoldMarketing → Blasts → (your blast) → Monitor
Compare results across campaignsMarketing → Blast performance

All five surfaces live under the Marketing group in the main Pipelinq navigation. They are gated to the marketing role (pipelinq-marketing); users without the role do not see the group.

1. Create a segment with the rule builder

A Segment is a live, rule-based query — not a frozen list. Every time a blast is sent the segment is re-evaluated against contact data, so newly-added or newly-qualifying contacts are picked up automatically.

1.1 Open the segment builder

  1. Navigate to Marketing → Segments.
  2. Click + New segment in the top right.
  3. Give the segment a clear name (e.g. Gemeente prospects — Zuid-Holland). The name appears in the New blast wizard and on the performance dashboard.
  4. Choose the entity typeContact or Customer. The available fields in the rule builder change accordingly.

1.2 Build the rule tree

The rule builder lets you compose AND / OR groups of leaf predicates. Each leaf predicate has three parts:

  • Field — a property of the chosen entity (e.g. tags, country, lifecycle_stage).
  • Operatorequals, notEquals, in, notIn, contains, gt, lt, gte, lte, between, exists, notExists.
  • Value — typed against the field's JSON-schema type. The builder refuses combinations that don't match (you cannot apply gt to a string field, for example).

You can nest groups: e.g. (tags contains "vip" AND country = "NL") OR lifecycle_stage in ["customer", "evangelist"].

1.3 Estimate the audience

Click Estimate size. Pipelinq evaluates the rule tree against the current contact/customer set and returns a count. The estimate is cached for one hour (configurable per instance) to avoid hammering the register on a quick edit-save cycle. Click Refresh to bypass the cache.

You can also click Preview members to inspect the first fifty contacts that match — useful for spot-checking that the rules behave as you expect before you send to the whole audience.

1.4 Save the segment

Click Save. Saved segments appear in the segment list and become selectable in the New blast wizard. A segment can be reused across many blasts.

Tip. Keep rule trees small and reusable. "German-speaking customers" and "VIP customers" as two segments compose better than one "German-speaking VIP customers" mega-segment.

2. Create a compliant template

A Template is the body of a marketing message. Pipelinq supports two channels:

  • Email — HTML and plain-text bodies with a subject line.
  • SMS — single text body, 160-char concatenated.

Both channel types enforce compliance checks before they can be saved or used in a blast (see Compliance requirements below).

2.1 Open the template editor

  1. Navigate to Marketing → Templates.
  2. Click + New template.
  3. Choose the channel (email or SMS).
  4. Give the template a name (e.g. Q4 Outreach — Gemeenten).

2.2 Write the body

The body field accepts standard merge fields surrounded by double braces:

  • {{contact.firstName}} — the recipient's first name.
  • {{contact.organization}} — the recipient's organisation, if any.
  • {{unsubscribe_url}} — the unique unsubscribe link for this recipient (required — see Compliance requirements).
  • {{view_in_browser_url}} — the public view-in-browser link.

For email, also fill the Subject field. Subject lines longer than 78 characters are flagged but not blocked.

2.3 Compliance requirements

Pipelinq enforces the following requirements on every save. The template editor highlights each requirement and refuses to save the template if any are missing:

ChannelRequirementWhy
Email{{unsubscribe_url}} merge field present in bodyCAN-SPAM §316.5(a)(3), GDPR Art. 7(3)
EmailPhysical sender address (street + city + country)CAN-SPAM §316.5(a)(5)
EmailList-Unsubscribe header is added automaticallyRFC 8058 one-click unsubscribe
SMSSTOP keyword footer (e.g. "Reply STOP to opt out")TCPA §227(b), GDPR Art. 7(3)
BothSender identity (organisation name)CAN-SPAM §316.5(a)(4), GDPR Art. 13

The organisation address and default sender identity are configured once per instance under Admin settings → Marketing → Sender identity by an admin.

2.4 Preview and save

Click Preview to render the template with a sample contact's data. The preview lets you check merge-field substitution, formatting, and the unsubscribe link rendering. Click Save when you are happy with the body. Saved templates appear in the New blast wizard.

3. Schedule and send a blast

A Blast is the act of sending one template to one segment through one channel, optionally scheduled for a future time and optionally split into A/B variants.

3.1 Open the New blast wizard

Navigate to Marketing → Blasts and click + New blast. The wizard guides you through six steps. You can move forward and back freely; the blast is created as a draft on the final step.

3.2 Step 1 — Name

Give the blast a descriptive name (e.g. Q4 Outreach — Gemeenten). The name is what shows up in the blast list and the performance dashboard.

3.3 Step 2 — Segment

Pick one of the segments you created in section 1. The wizard shows the estimated audience size so you have a sanity check before you go any further.

3.4 Step 3 — Template

Pick one of the templates from section 2. The wizard filters templates to the channel you choose in step 4, so if the list is empty step back and check that you have a template for the chosen channel.

3.5 Step 4 — Channel

Pick Email or SMS. If your instance has more than one provider configured (e.g. both SendGrid and SES for email), pick the Connector source — the provider that will actually carry the delivery. Leaving it blank uses the instance default.

3.6 Step 5 — Schedule

Pick a Send at datetime. The blast will move from scheduled to sending automatically at that moment (the dispatch loop runs every five minutes). Leave blank to send immediately when you submit on step 6.

3.7 Step 6 — A/B split (optional)

Tick Run an A/B variant test to split the audience between two template variants. The split percentage is the share of the audience that receives variant A; the remainder receives variant B. Pick the second template in the variant slot that appears.

The wizard performs a consent preflight when you submit:

  • It re-evaluates the segment to get the live recipient list.
  • It checks each recipient's consent record for the chosen channel.
  • If any recipients lack consent, the Missing consent dialog appears with three options:
    • Cancel — do not send, return to the wizard.
    • Request consent — trigger a separate consent-request flow for the unconsented contacts; the blast remains a draft.
    • Skip and send — exclude the unconsented contacts and send to the consented remainder. The excluded contacts are listed in the blast's delivery log for audit.

When you confirm, the blast is created as scheduled (if you picked a future time) or transitions straight to sending.

4. A/B testing workflows

Pipelinq supports a single A/B split per blast: two template variants, one segment, one channel. The split is configured on step 6 of the New blast wizard.

4.1 How the split works

When the blast moves to sending, the dispatcher partitions the recipient list deterministically:

  • A hash of the recipient's contact ID is computed.
  • The hash is mapped into a [0, 100) bucket.
  • Recipients in [0, splitPercent) get variant A; recipients in [splitPercent, 100) get variant B.

The same recipient always falls into the same bucket on re-evaluation, so a paused/resumed blast assigns each recipient consistently.

4.2 Reading the comparison

Once both variants have sent at least 100 deliveries each, the A/B Testing tab of Blast performance unlocks. It shows:

  • Open rate for A and B side-by-side.
  • Click rate for A and B side-by-side.
  • A statistical-significance marker — green if a chi-square test rejects the null at p < 0.05, grey if not. Below 100 deliveries per arm the marker shows insufficient sample.

4.3 Acting on the result

The winning variant is not auto-promoted — picking the winner is a human decision. The typical pattern is to clone the winning template into a new "champion" template and use it as the default for the next blast.

5. Monitor delivery and attribution

5.1 Live delivery — Blast monitor

From the blasts list, open a blast and click Monitor (or open Marketing → Blasts → (your blast) → Monitor directly). The monitor view shows:

  • The blast's current statusdraft, scheduled, sending, sent, paused, canceled.
  • Live delivery totals — queued, sent, delivered, bounced, unsubscribed, complained.
  • A per-delivery log — each recipient's individual state with a timestamp.

The totals are kept fresh by webhook ingest from the configured provider (SendGrid, SES, Twilio). Webhook events are HMAC-verified before they are accepted.

To stop a blast that is currently sending, click Cancel. All queued deliveries are aborted; deliveries already handed to the provider continue. The blast moves to canceled.

5.2 Aggregate performance — Blast performance

Marketing → Blast performance is the post-send analytics surface. It has three tabs:

Overview tab

A sortable table of every blast with its KPIs:

  • Open rate = opened ÷ delivered.
  • Click rate = clicked ÷ delivered.
  • Unsubscribe rate = unsubscribed ÷ delivered.
  • Bounce rate = bounced ÷ sent.
  • Complaint rate = complained ÷ delivered (spam reports).

Sort by any column to find your best (or worst) campaigns.

A/B testing tab

The side-by-side variant comparison described in section 4.2.

Attribution tab

For each blast, the Attribution tab shows:

  • Attributed deal count — the number of deals in CRM whose first link to the customer was a click on this blast.
  • Attributed revenue (EUR) — the summed value of those attributed deals.

Attribution uses a first-click model with a configurable attribution window (default 30 days). When a recipient clicks a tracked link, Pipelinq records the click against the blast. If that contact's organisation later becomes the customer on a deal within the window, the deal is attributed to the blast.

The attribution window is set per-instance by an admin under Admin settings → Marketing → Attribution window.

5.3 Exporting results

Both the Overview and Attribution tabs offer a Download CSV button for offline reporting. The download includes one row per blast and one column per KPI.

Troubleshooting

SymptomWhat to check
Blast stuck in scheduled past the send timeThe dispatch loop (BlastSendJob) runs every 5 minutes. If you still see no progress after 10 minutes, ask your admin to check the background-job log.
Many bounces shortly after sendYour contact list may contain stale addresses. Use the Delivery log → bounced view to identify and clean them.
Open rate seems very lowOpens are tracked via a 1×1 tracking pixel; mail clients that block remote images (especially Outlook on Windows) will under-report. Click rate is a better signal of engagement.
Attribution shows zeroAttribution depends on click tracking + the deal's customer matching the blast recipient's contact organisation. Check that click tracking is enabled on the template's links and that the deal's customer is correctly linked.
The Marketing group is missing from the navigationYou are not in the pipelinq-marketing user group. Ask your admin to add you.

See also

  • Admin settings for marketing — Admin → Settings → Marketing (sender identity, default provider, attribution window).
  • The Customer portal guide for the recipient-side unsubscribe flow: portal-guide.md.