Campaign link builder that enforces your UTM taxonomy

By General Input

Your team builds every campaign link from approved dropdown values, so nobody types FB one week and facebook the next.

Integrations

  • Bitly
  • Slack Bot

Type

App

Categories

  • Marketing
  • Operations

Build me an app my marketing team opens every time they need a campaign link, so we stop inventing tracking values on the fly. It has three views: a guided link builder as the main surface, a governance audit, and a small admin screen where marketing ops edits the approved taxonomy.

The approved taxonomy lives in the app itself, not in Bitly. The admin view manages four lists of values: campaign, source, medium and region. Each value has a display label and the exact string that gets written into the tagged URL, so Facebook always emits facebook and never FB or Meta. Each campaign value also stores the Slack channel its links should be announced in, chosen from a channel list loaded with the Slack Bot List Channels operation. Marketing ops can add, rename and retire values. Retiring a value keeps it readable on existing links but removes it from the builder dropdowns.

The builder is the default view. The user pastes a destination URL, then picks campaign, source, medium and region from dropdowns that only offer approved values. There is no free text entry for those four fields, which is the entire point of the screen. The user types a link title and can tick a box to generate a matching QR code. As selections are made, show a live preview of the fully composed destination URL with utm_campaign, utm_source and utm_medium plus the region parameter appended, so the user can see exactly what is being tracked before committing.

Submitting composes the final tagged URL and calls the Bitly Create a Bitlink operation with the title and one tag per chosen taxonomy value, created inside the group the team works in. Resolve the available groups with Retrieve Groups and let marketing ops select the working group once in the admin view. If the QR box was ticked, call Create a QR Code for the new link and show the image with a download option. Then post the finished short link into that campaign's Slack channel using the Slack Bot Send a Message operation, including the title, the four chosen values and who created it, so the whole team pastes the identical link.

The builder screen also shows each signed in user the links they personally created most recently, newest first, with the short link, title, campaign and a copy button. Record every creation in the app along with the user who made it, so this list is per person rather than a shared feed.

The second view is a governance audit. Load the group's links with Retrieve Bitlinks by Group and the tags currently in use with Retrieve Tags by Group, then compare every link against the approved taxonomy. Flag three problems: links carrying no tags at all, links carrying a value that is not on the approved list, and links missing one of the four required dimensions. When a value is close to an approved one, show the offending value next to the approved value it most likely meant, so the correction is obvious. Put a small summary at the top of the view showing how many links are clean versus flagged, so the person who owns the taxonomy can tell whether things are improving over time.

From the audit the user ticks multiple rows and fixes them in a single pass. Selected rows can have tags added, tags removed, or be archived when the link is dead, all through Bulk Update Bitlinks. That operation handles up to 100 links per call, so split larger selections into chunks and report progress. After the update completes, refresh the list so corrected rows drop out of the flagged set.

Two audiences use this. The marketing team lives in the builder and should never need to think about conventions, because the dropdowns make the wrong answer impossible. Marketing ops owns the admin view and runs the audit periodically. Keep it an interactive builder and audit console for people creating links one at a time, not a bulk importer of rows from a spreadsheet.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them