Elido
Everything Elido does
Pro & Business

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
Campaign: Q2 Product Launch
UTM auto-applied
UTM template:source=newslettermedium=emailcampaign=q2-launch
  • elido.me/q2-newsletter
    acme.com/pricing?utm_source=newsletter
    3,812
    clicks
    142
    conv.
  • elido.me/q2-social
    acme.com/pricing?utm_source=twitter
    2,104
    clicks
    67
    conv.
  • elido.me/q2-email
    acme.com/pricing?utm_source=email
    5,230
    clicks
    261
    conv.
11,146
total clicks
470
conversions
4.2%
avg CTR
5
A/B variants per link
2
Split modes: weighted + round-robin
z-test
Statistical confidence model
100
Links bulk-assigned per API call

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
A/B split — elido.me/q2-launch
14 days · 13,451 clicks
Mode:WeightedRound-robin
A/pricing-hero-v1
4,820 · CTR 3.8%
weight 40%35.8% of traffic
B/pricing-hero-v2
Winner declared
5,611 · CTR 4.9%
weight 35%41.7% of traffic
C/pricing-hero-v3
3,020 · CTR 3.6%
weight 25%22.5% of traffic
Z-test confidence
96.4%
Sample size
200 / variant
Lift (B vs A)
+28.9%

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 & Medium
    newsletter, email, cpc, social — whatever your channel taxonomy uses
  • Campaign name
    Inherited on all links; individual links can override utm_content
  • Stable at creation time
    Editing the template doesn't re-tag existing links — history stays clean
  • Bulk import support
    CSV import respects utm_* columns; per-row values override the template
UTM template — Q2 Product Launch
newsletter
email
q2-launch
optional keyword
per-link override
Preview URL
https://acme.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=q2-launch
Applied to all 12 links in this campaign

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.

Clicks — last 7 days11,146 total
Mon
Tue
Wed
Thu
Fri
Sat
Sun
By referrer
  • newsletter.acme.com
    47%
  • t.co
    29%
  • Direct / unknown
    24%
By country
  • Germany (DE)
    38%
  • France (FR)
    22%
  • United States (US)
    21%
  • Others
    19%
By device
  • Desktop
    56%
  • Mobile
    37%
  • Tablet
    7%
Conversion funnel
  • Impressions
    284,000
    100%
  • Clicks
    11,146
    39%
  • Conversions
    470
    4.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.

  1. Step 1

    Request arrives

    elido.me/q2-launch

    User clicks from any channel — email, social, QR.

  2. Step 2

    Rules evaluated

    Edge · < 1 ms

    Geo, device, OS, and time rules checked in order. First match redirects immediately.

  3. Step 3

    A/B split applies

    Fallback path only

    If no rule matched, the weighted or round-robin split selects a destination.

  4. Step 4

    Click recorded

    Variant ID tagged

    variant_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.

UTM templates
01

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.

A/B splits
02

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.

Composition with routing rules
03

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 analytics
04

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.

Campaign operations
05

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.

D
Digital marketing team, retail brand, Krakow
Digital Marketing Manager

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.

G
Growth team, consumer app, Helsinki
Head of Growth

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.

P
Performance marketing, B2B SaaS, Vienna
Performance Marketing Lead

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.

FeatureElidoBitlyShort.io
Campaign UTM templatesYes — inherited at link-creation, per-link overrideUTM builder per link — no template inheritanceNo UTM templates
A/B variants per linkUp to 5 — weighted or round-robinNot available2 variants (Basic A/B only)
Statistical confidence displayz-test confidence in dashboardNot availableNot available
Composition with routing rulesYes — rules + A/B coexist on same linkRouting rules only, no A/BNo routing rules
Campaign revenue attributionYes — Stripe + Shopify conversion webhooksNot availableNot available
Bulk link management100 links per API call, idempotency-keyedCSV import — no bulk APICSV import — no bulk API
Campaign-level analyticsAggregate clicks, per-link breakdown, revenueLink group total clicks onlyBasic 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.

Ready to try it?

Start on the free plan, upgrade when you need a custom domain.

Campaigns & A/B — Group links, split traffic. · Elido