Campaigns & A/B. Group links. Split traffic. Measure everything.
Campaigns share a UTM template across links. A/B variants split per-request: weighted random or round-robin. Both work alongside smart-link rules.
- Group links under a shared UTM template
- A/B split with up to 5 variants per link
- Z-test confidence — we show the math
- Composes with smart-link routing rules
- elido.me/q2-newsletteracme.com/pricing?utm_source=newsletter3,812clicks142conv.3.7%CTR
- elido.me/q2-socialacme.com/pricing?utm_source=twitter2,104clicks67conv.3.2%CTR
- elido.me/q2-emailacme.com/pricing?utm_source=email5,230clicks261conv.5.0%CTR
A/B testing
Split traffic. Watch confidence climb.
Up to 5 variants per link with weighted or round-robin splits. Each variant tracks its own click time-series. The dashboard surfaces a two-proportion z-test as a directional indicator — we don’t hide the math.
- Weighted (sums to 100) or round-robin rotation
- Per-variant click time-series and geo breakdown
- Z-test confidence over a configurable sample floor
- Winner-picks-all locks the link to the leading variant
- Pause one variant mid-test without losing data
UTM templates
One template. Every link tagged automatically.
Define a UTM template at the campaign level. Every link created inside the campaign inherits those values at creation time — not at click time. Individual links can override a specific field while inheriting the rest.
- Source & Mediumnewsletter, email, cpc, social — whatever your channel taxonomy uses
- Campaign nameInherited on all links; individual links can override utm_content
- Stable at creation timeEditing the template doesn't re-tag existing links — history stays clean
- Bulk import supportCSV import respects utm_* columns; per-row values override the template
Campaign analytics
Every link. Every variant. One dashboard.
Campaign analytics aggregate across all links in the campaign. Clicks by day, breakdown by referrer, country, and device — plus a conversion funnel that ties impressions to revenue.
- newsletter.acme.com47%
- t.co29%
- Direct / unknown24%
- Germany (DE)38%
- France (FR)22%
- United States (US)21%
- Others19%
- Desktop56%
- Mobile37%
- Tablet7%
- Impressions284,000100%
- Clicks11,14639%
- Conversions4704.2%
- Revenue€23,500
Composition
Rules first. A/B second. Always consistent.
A link can have both smart-link routing rules and A/B variants. Rules are evaluated first — if one matches, the variant split is bypassed. If no rule matches, the A/B split applies to the fallback path. Route iOS users to the App Store unconditionally while A/B testing two web landing pages for everyone else.
- Step 1
Request arrives
elido.me/q2-launchUser clicks from any channel — email, social, QR.
- Step 2
Rules evaluated
Edge · < 1 msGeo, device, OS, and time rules checked in order. First match redirects immediately.
- Step 3
A/B split applies
Fallback path onlyIf no rule matched, the weighted or round-robin split selects a destination.
- Step 4
Click recorded
Variant ID taggedvariant_id on every click event — export to ClickHouse, BigQuery, or Snowflake.
What you can do
- Per-campaign UTM templates
- Bulk-assign up to 100 links per call
- Weighted random or round-robin variants
- Smart-link rules override variants when both set
What campaigns and A/B testing actually do in the Elido platform
A 'campaign' is more than a folder. The features below cover UTM templating, statistical A/B, and how campaigns compose with smart-link routing rules.
Campaign-level UTM templates applied automatically to every link created in the campaign
A campaign defines a UTM template: source, medium, campaign name, and optional term and content. Every link created inside the campaign (via dashboard, API, or CSV import) inherits the template values at creation time. UTM values are resolved at link-creation time, not at click time, so they're stable even if the campaign template is later edited. Individual links can override specific UTM fields while inheriting the rest — useful for creative variants (utm_content) within the same campaign. The full link + UTM + click count export is available from the campaign dashboard as a CSV or via the scheduled export API. UTM templates also apply to bulk-imported links (CSV column utm_* fields override the template per-row). This eliminates the 'someone forgot to tag the link' problem that haunts campaign attribution in tools where UTMs are applied manually.
Up to 5 weighted A/B variants per link — weighted random or round-robin — with z-test confidence display
A link inside a campaign can have up to 5 destination variants. Traffic is split by configurable weights (e.g., 70/30, 50/25/25) or by round-robin (sequential even rotation). Each variant tracks its own click time-series, geo breakdown, and conversion events, so you can see if a variant's performance is consistent across time and geography — not just a single count. The dashboard surfaces z-test confidence ('Variant B leads with 91% confidence') once both variants clear the minimum sample threshold (default 200 clicks each, configurable per link). The z-test is a two-proportion test at the click level; it's a directional indicator, not a causal inference engine. Winner-picks-all: lock the link to the leading variant and delete the others — this action is irreversible and logged in the audit trail.
Smart-link routing rules and A/B variants coexist — rules evaluated first, variants apply to the fallback path
A link can have both smart-link routing rules and A/B variants. The evaluation order is: rules first, variants second. If a rule matches (e.g., all iOS users → App Store), the rule wins and A/B variants are not evaluated for that request. If no rule matches, the A/B split applies to the fallback destination. This means you can unconditionally route platform-specific traffic while still A/B testing the web destination for the remaining audience. Edge case: if you add an A/B split to a link that previously had only rules, confirm that the fallback destination in the A/B config is what you intend for unmatched requests — the default fallback in an A/B split is Variant A unless configured otherwise.
Campaign-level analytics: total clicks, per-link breakdown, revenue from conversion events, UTM distribution
The campaign analytics view aggregates across all links tagged to the campaign. Metrics: total clicks (by day, hour, country, device), per-link click table sortable by clicks, CTR against estimated impressions (if impression data is piped in from an ad platform), conversion count and revenue from Stripe/Shopify webhook events, and UTM parameter distribution across links in the campaign. The revenue attribution view shows which links in the campaign drove the most revenue — useful for identifying high-performing creative variants and scaling spend. Campaign analytics export is available as CSV (point-in-time) or via scheduled export to S3/BigQuery/Snowflake (Business). If you're running paid acquisition, the scheduled export with click + conversion + revenue joined is the artifact your media buying team needs.
Bulk link management: create, update, and assign up to 100 links per API call inside a campaign
POST /v1/workspaces/{ws}/campaigns/{campaign_id}/links/bulk accepts up to 100 link specs per call. Each spec can include: destination URL, slug, UTM overrides, tags, expiry, max-clicks cap, pixel IDs, A/B variant config, and smart-link rules. The bulk endpoint is idempotency-keyed on slug so re-running a partial batch doesn't create duplicates. For marketing operations teams who manage campaigns in a spreadsheet, the dashboard CSV import covers the same spec (required: destination_url; optional: everything else). Import preview shows a diff of what will be created or updated before committing. Maximum 10,000 rows per dashboard import; unlimited via API with rate limiting (Business: 1,000 requests/minute). Campaign link table in the dashboard supports bulk-select → bulk-assign pixel, bulk-pause, bulk-expire, and bulk-export.
Marketing and growth teams using Elido campaigns
Names are placeholders — real customer case studies land here as they are published.
“UTM templates per campaign ended the 'who tagged that link?' argument. Every link in a campaign inherits the right UTMs at creation — we haven't had a misattributed campaign in six months. The difference shows in our attribution accuracy in GA4.”
“A/B splits at the link level let us test two landing pages without buying a CRO tool. The z-test confidence in the dashboard replaced a spreadsheet formula our data team was maintaining. We close tests faster and argue less about significance.”
“Running smart-link rules and A/B splits together on the same link is the combination that made Elido the right call for us. Rules route international traffic to localized pages; A/B tests two hero copy variants for the English-language audience. One short link, full control.”
Elido campaigns & A/B vs Bitly vs Short.io
Bitly has campaign folders and basic link grouping. Short.io has limited A/B testing. Neither offers z-test confidence or composition with smart-link routing rules.
| Feature | Elido | Bitly | Short.io |
|---|---|---|---|
| Campaign UTM templates | Yes — inherited at link-creation, per-link override | UTM builder per link — no template inheritance | No UTM templates |
| A/B variants per link | Up to 5 — weighted or round-robin | Not available | 2 variants (Basic A/B only) |
| Statistical confidence display | z-test confidence in dashboard | Not available | Not available |
| Composition with routing rules | Yes — rules + A/B coexist on same link | Routing rules only, no A/B | No routing rules |
| Campaign revenue attribution | Yes — Stripe + Shopify conversion webhooks | Not available | Not available |
| Bulk link management | 100 links per API call, idempotency-keyed | CSV import — no bulk API | CSV import — no bulk API |
| Campaign-level analytics | Aggregate clicks, per-link breakdown, revenue | Link group total clicks only | Basic link group stats |
Campaigns & A/B questions
How is the z-test confidence calculated in the A/B dashboard?
Two-proportion z-test at the click level. The null hypothesis is that both variants have the same click-through rate. Confidence is 1 - p-value, expressed as a percentage. We do not apply Bonferroni correction for multiple variants (running 3+ variants increases the false positive rate — for formal multi-variant experiments, export the raw click stream and apply the correction in your warehouse). The dashboard confidence number is a directional indicator for teams without a data scientist reviewing every test; for high-stakes decisions, export and apply sequential testing corrections.
What's the minimum sample size for reliable A/B results?
Default minimum is 200 clicks per variant before the confidence indicator is shown. You can configure this threshold per link (50 minimum, 5,000 maximum). With typical 50/50 splits, 200 clicks per variant gives you roughly 80% power to detect a 10% absolute difference in click rate at 95% confidence — adequate for directional decisions. For smaller effects (1–5% differences), you need thousands of clicks per variant. The A/B system surfaces the number and doesn't hide it; if you need a larger sample, wait.
Can I add links to a campaign after it's been running?
Yes. Links can be added to or removed from a campaign at any time. Adding a link doesn't backfill its historical click data into the campaign aggregates — campaign analytics show clicks that occurred while a link was assigned to the campaign. If you're using UTM templates, the template is applied at link-creation time, so links added after campaign launch need to be created inside the campaign (or manually UTM-tagged) to inherit the template values.
How do round-robin and weighted variants differ?
Round-robin distributes traffic sequentially: first click → Variant A, second → Variant B, third → Variant A, and so on. Every variant gets exactly equal traffic over any large enough window. Weighted random assigns each click to a variant probabilistically according to the configured weights (e.g., 70% Variant A, 30% Variant B) — the actual distribution converges to the weights over time but will show variance over short windows. Use round-robin when you want exact equality; use weighted when you want to favor a control variant or ramp up a new variant cautiously.
Can I pause a specific variant without ending the A/B test?
Yes — you can pause an individual variant (set its weight to 0 in weighted mode, or exclude it from round-robin rotation). Paused variants stop receiving traffic but retain their historical click data. This is useful if a variant has a bug or shows a negative effect mid-test: pause it without ending the test or losing the accumulated data. Pausing the variant is logged in the audit trail.
What happens if I change the UTM template on a running campaign?
Changing the UTM template does not retroactively update existing links. Links created before the template change keep their existing UTM values (set at creation time). Links created after the change inherit the new template values. This is intentional: UTM values in analytics are a fact about what was tagged, not a configurable display label. If you need to re-tag existing links, export them, update the UTM fields in the CSV, and re-import — the importer updates existing links by slug match.
Is there a limit on links per campaign?
No limit on links per campaign. Campaigns with tens of thousands of links are supported — the campaign analytics query is backed by ClickHouse and handles arbitrary link counts. The dashboard link table paginates at 100 links per page with search and filter. For campaigns at very large scale (100,000+ links), the API is the recommended interface rather than the dashboard.
Can I export A/B test results for statistical analysis in my own tools?
Yes. Export the full click event stream for a campaign from the analytics export API. Filter by link_id for each variant, join with conversion events, and run any statistical model you prefer. The export includes the variant_id field on each click event so you can distinguish which variant was served. For BigQuery or Snowflake users, the scheduled export includes variant_id and the raw click + conversion tables.
Keep reading
Geo, device, and time routing rules that compose with A/B variants on the same link.
ClickHouse-backed click analytics — where campaign and per-variant data lives.
Revenue attribution per campaign — tie Stripe and Shopify orders to campaign links.
Campaign-level pixel defaults — attach retargeting pixels to all links in a campaign.