Every call tracking setup is built from two building blocks, and most good setups use both. Static numbers are simple, cheap, and perfect for some jobs; dynamic numbers are richer, costlier, and perfect for others. This is the decision guide: what each does, what each costs, and a use-case matrix that tells you which block goes where.
Static numbers: one number per campaign
A static tracking number is permanently assigned to a single marketing placement: this number lives on the billboard, that one on the Yelp profile, another in the March postcard. Every call to it is attributed to its placement. Done.
What you get: clean channel- or campaign-level attribution, forever, with zero code. Cost-per-call for any placement becomes simple division.
What you don’t get: anything finer. A static number can tell you “the website drove this call” but never “the emergency-repair ad click for the keyword ‘burst pipe’ drove this call.” All callers to a placement are one undifferentiated bucket.
Where static shines: anywhere code can’t run — print, radio, TV, billboards, vehicle wraps, yard signs, directory profiles — and anywhere one bucket is genuinely all you need.
Dynamic numbers: one number per visitor session
Dynamic number insertion (DNI) swaps the number on your website per visitor, drawing from a pool, so each call matches back to an individual session: source, campaign, keyword, landing page, pages viewed. The mechanics are covered in the DNI explainer; the pool economics in how tracking numbers work.
What you get: session-level attribution — the data that makes Google Ads conversions, keyword decisions, and landing-page analysis possible for calls.
What you don’t get: simplicity. DNI needs a script, a properly sized pool, and periodic QA. And it only works where the script runs: your own website.
Cost and data trade-offs
The honest comparison in one table:
| Static | Dynamic (DNI) | |
|---|---|---|
| Numbers needed | One per placement | A pool sized to concurrent traffic |
| Monthly cost | Low — a few numbers | Higher — pool rental is the real cost of session-level data |
| Setup | None (just publish the number) | Script install + configuration + QA |
| Attribution depth | Channel/campaign bucket | Session: source, campaign, keyword, page |
| Works offline | Yes — its whole purpose | No — website only |
| Failure modes | Almost none | Pool exhaustion, partial installs, caching quirks |
| Feeds ad-platform bidding usefully | Coarsely | Fully — this is the killer feature |
The cost asymmetry is worth internalizing: static tracking’s cost scales with how many placements you track; dynamic’s scales with how much traffic you have. A business with heavy traffic and few offline placements spends almost everything on the pool; a business with modest traffic and a dozen directory listings may spend more on statics.
Use-case matrix: which to use where
| Placement | Use | Why |
|---|---|---|
| Website (all pages) | Dynamic | Session-level data is the point of tracking web traffic |
| Google Ads landing pages | Dynamic | Keyword/click attribution feeds conversions and bidding |
| Google Business Profile | Static | One dedicated number in the primary field, configured safely |
| Yelp / Angi / directories | Static (one each) | Per-directory cost-per-call; terms permitting |
| Print, radio, TV, billboards | Static (one each) | No code can run; per-placement buckets are exactly right |
| Direct mail campaigns | Static (per campaign or drop) | Compare drops; consider a vanity number for memorability |
| Email signatures / newsletters | Static | One bucket for “email drove a call” is usually sufficient |
| Vehicle wraps / signage | Static | Long-lived placements deserve their own permanent bucket |
The pattern is almost embarrassingly clean: dynamic on the website, static everywhere else. The judgment calls are rare — a single-page microsite with one traffic source can get away with a static number; an email program you’re heavily optimizing might justify per-campaign statics or UTM-into-DNI flows.
Hybrid setups: using both together
Every mature setup is a hybrid, and the two blocks compose neatly:
- The layered funnel: a prospect sees your billboard (static attribution: billboard), searches your brand, clicks a search ad, and calls from the site (dynamic attribution: branded search session). Each layer catches what the other can’t.
- Offline-to-online bridging: print pieces can carry a static number and a campaign URL; visitors who choose the web path get caught by DNI with the campaign’s UTM intact.
- One reporting plane: platforms report statics and dynamics side by side, so “calls by source” spans your whole marketing footprint, not just the digital half.
The one integration rule: keep an inventory. Every static number is a placement commitment — know where each lives so nothing gets stranded when placements end or providers change.
Decision checklist
- [ ] Website traffic tracked with DNI, sitewide, pool sized to concurrent traffic
- [ ] One static per offline placement worth its own cost-per-call figure
- [ ] One static per paid directory (where terms allow)
- [ ] GBP configured with its dedicated number, real number in the additional field
- [ ] Low-priority placements consciously bucketed together rather than accidentally untracked
- [ ] Number inventory documented: every static, its placement, its start date
Frequently asked questions
Can I use static numbers for online campaigns?
You can — a static number on a landing page still attributes calls to that campaign — but you’re paying for tracking while forgoing its best output: session and keyword data, and clean conversion feeds to ad platforms. Use static online only for quick tests or single-source microsites.
Are dynamic numbers more expensive?
Generally yes, because session-level tracking rents a pool of numbers rather than a handful. Whether it’s worth more depends on what the data drives: for paid traffic feeding automated bidding, dynamic pays for itself quickly; for a static billboard, it isn’t even applicable.
Can I switch from static to dynamic later?
Yes, and it’s the natural maturity path: many businesses start with a few statics to prove the concept, then add DNI once the value is obvious. The two coexist from day one of the upgrade — nothing about statics needs dismantling.
Next in the fundamentals series: Session-Level vs. Source-Level Call Tracking — the pricing-page jargon decoded. Or back to the complete guide.