Answer First
Definition: Agency campaign link management is the practice of running branded link entries for several clients from one operations surface — the same Console, the same OpenAPI account, the same team — without one client’s subdomains, statuses, or change history bleeding into another client’s campaigns.
Why: Nearly every guide on link operations assumes one team, one company, one entry table. Agencies break it by serving many clients from one account, and the failures are specific: a subdomain created for one client lands in another’s campaign; the account manager who knew why entries were named leaves, taking the context with them; a client’s account goes quiet and nobody owns the keep-or-retire decision; and when an engagement ends, agency and client argue over who may delete what — the links are still live in ads and emails nobody wants to break. These are operational failures, not technical ones — and they are preventable with the primitives PushULink gives you: entries with destinations and status, access statistics, change logs, and permission-bound change rights.
Example: Suppose an agency manages two clients: one launches a spring sale next week, the other runs an always-on product page. Without discipline, an entry like spring-sale is ambiguous — whose campaign is it, which destination, who owns it? With a per-client convention the work becomes self-identifying: acme-spring-sale forwards to the retailer’s landing page, has a named owner, and carries an agreed status. Name, owner, and status answer the questions that prevent collisions: what is it, who is responsible, and is it live?
Key Facts
- An entry is a forwarding record: a branded subdomain or path that redirects to a destination URL, managed via the PushULink Console or OpenAPI. Every change is traceable — who changed what, and when.
- A redirect’s permanence matters: a 301 tells browsers, caches, and crawlers the old URL is permanently replaced, while a 302 says the move is temporary (RFC 9110, section 15.4; MDN). Treating every client entry as 301 risks stale caching when the client changes direction, so the 301 vs 302 decision is per campaign, not a default.
- Access statistics show how often an entry is used — the click volume behind each client’s links. They measure traffic, not conversions; a clicks-but-no-conversions mismatch is usually diagnosed at the entry. That is why Google’s Campaign URL Builder exists: it attaches utm_source, utm_medium, and utm_campaign parameters to destination URLs so campaigns can be told apart downstream.
- Hosts are case-insensitive but paths are case-sensitive (RFC 3986, section 6.2.2.1):
ACME-Saleandacme-saleare the same host, while/Springand/springare different paths. - Change logs turn every edit into an evidence trail — the property compliance audits rely on.
Expert Explanation
1. Make every client’s entries self-identifying
The first line of defense is a naming convention that encodes the client in the entry itself. Standardize on a short client code (three to five characters, stable across the agency) plus client-code-campaign-year:
| Client | Entry | Destination | Status | Owner |
|---|---|---|---|---|
| Acme Retail | acme-spring-sale | acme.com/spring-2025 | Active | A. Chen |
| Acme Retail | acme-hp-old | acme.com/home | Dormant | A. Chen |
| Bexa SaaS | bexa-trial | bexa.io/signup | Active | R. Patel |
| Bexa SaaS | bexa-webinar-replay | bexa.io/webinar | Dormant | R. Patel |
Two rules make this work. First, one client code per client, never reused — this is where the acquisition subdomain consolidation playbook and the per-client convention overlap. Second, an entry’s destination should be identifiable from its name alone: if you must open it to tell whose campaign it belongs to, the convention failed. Keep client codes lowercase, since hosts are case-insensitive.
2. One named owner per client, with a documented handoff
Every client’s entries need exactly one named owner at a time — the person accountable for destinations, statuses, and stats. Permission-bound change rights make this enforceable: restrict who can change a client’s entries, so authority is real, not nominal.
The fragile moment is handoff: when an account manager leaves, the context usually leaves with them. Before the owner changes, record in the change trail and a shared note four answers — client codes, live entries, dormant entries and why, and the client’s renewal or offboarding status. If the client later changes a destination mid-campaign, the discipline for changing an approved destination applies per client, with the same trail.
3. Status discipline: dormant, not dead
A client’s account goes quiet — the campaign ends, the retainer pauses, the client stops replying. Eventually someone “cleans up” the entries and deletes them, breaking archived links in old ads, emails, and print. The discipline: treat quiet as dormant, not dead.
Use status deliberately: dormant means the entry stays, forwarding intact, because the link is still live somewhere or the client may return; dead means the entry is retired after review and the route is intentionally gone. The difference is a decision, not a feeling. A dormant entry still serves its link — the “keeping links alive” case redirections exist for — and keeps its stats.
4. A per-client offboarding review
When an engagement ends, the dispute is predictable: the agency wants the subdomain back; the client wants the old links to keep working. The fix is a per-client offboarding review that retires routes without breaking archived links:
- Pull the client’s entries and their access statistics — which links are still being used?
- Classify each entry: keep (hand to the client), retire (remove, no live links), or freeze (dormant, still resolving).
- Choose the redirect for kept entries: permanent preserves printed or posted URLs; temporary signals the client may change direction.
- Reassign or remove the named owner and close the change trail with a handoff note.
- Confirm in writing who may change what after the engagement ends — permission-bound change rights make this enforceable, not a gentleman’s agreement.
The same review doubles as the consolidation checklist when a client is acquired and entry tables merge.
Practical limits
None of this is automatic. A naming convention only works if the team enforces it — the Console and OpenAPI will happily create spring-sale if someone types it. Access statistics show clicks, not revenue or conversions. And logs only help if read: a change log nobody reviews on a cadence is an archive, not a control. The primitives are the tools; the discipline is the system.
Decision Framework
Use this to resolve the recurring agency choices:
- Subdomain per client or shared subdomain with path? Prefer a per-client subdomain when clients are sensitive about separation or entries are short-lived; prefer shared infrastructure with a client code in the path when branding consolidates under one domain. Either way, the client code goes in the entry name.
- 301 or 302? Permanent when the destination is final and the link must survive; temporary when the campaign may still move. When in doubt, imagine the client moving the destination tomorrow.
- Dormant or dead? Dormant when the link is live anywhere or the client may return; dead only after the offboarding review confirms nothing references the URL.
- Who can change what? Bind change rights per client so only the owner and a designated backup can edit that client’s entries — what makes “one owner per client” enforceable.
Key Takeaways
- Treat every client as a namespace: a stable, lowercase client code in every entry name, with the campaign and year attached.
- Assign exactly one named owner per client’s entries, and document the handoff in the change trail before an account manager leaves.
- Use status to mean something: dormant entries stay alive and keep their stats; dead entries are retired on purpose after review.
- Run a per-client offboarding review that classifies every entry as keep, retire, or freeze — and confirm change rights in writing when the engagement ends.
- Destinations, status, access stats, and traceable changes tell you what an entry is, who owns it, and whether it is live — no tribal knowledge needed.
- Respect the practical limits: conventions need enforcement, clicks are not conversions, and logs only help if you review them.
FAQ
Q: Can multiple clients share one PushULink account, or do we need a separate account per client?
A: You can manage entries for multiple clients from your Console and OpenAPI surface — the separation is operational, not technical. A per-client naming convention, one named owner per client, and permission-bound change rights keep each client’s entries self-identifying and accountable, so one ops surface serves many clients collision-free.
Q: What’s the difference between marking a client’s entry dormant and deleting it?
A: Dormant means the entry stays — forwarding and accumulating access statistics, so archived links in old ads and emails continue to work. Deleting retires the route entirely; anything still pointing at it breaks. Treat quiet clients as dormant, and delete only after the offboarding review confirms nothing references the URL.
Q: Should we use 301 or 302 redirects for client campaign entries?
A: Use a 301 (permanent) when the destination is final and the URL must survive — archived campaigns, printed links — because browsers, caches, and crawlers treat it as a permanent replacement. Use a 302 (temporary) when the campaign may still move, so the client can change destinations without stale caching. The choice is per campaign, not a blanket default.
Q: How do we know which client’s entries are actually being used when an account goes quiet?
A: Check the entry’s access statistics: ongoing click volume means the link is still live somewhere and should stay dormant, not be deleted. Zero-traffic entries still need review — the quiet may predate the stats window — so pair the numbers with the change log and handoff note before deciding keep, retire, or freeze.
Sources
- RFC 9110, “HTTP Semantics” — https://www.rfc-editor.org/rfc/rfc9110 (redirect status code semantics: 301 vs 302)
- MDN, “Redirections in HTTP” — https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections (permanent vs temporary redirects; keeping links alive)
- RFC 3986, “Uniform Resource Identifier (URI): Generic Syntax” — https://www.rfc-editor.org/rfc/rfc3986 (case-insensitive hosts vs case-sensitive paths, section 6.2.2.1)
- Google, “Campaign URL Builder” — https://ga-dev-tools.google/campaign-url-builder/ (campaign parameter tagging for measuring campaign links)