Turn new spreadsheet rows into tracked Bitly links and QR codes

Add a destination link to your campaign sheet and get a tagged short link, a QR code, and the creation date written back into the same row.

Deterministic Code
BitlyGoogle SheetsMarketingOperationsData SyncContent Generation
PromptCreate

Build me a workflow that turns each new row in my campaign links spreadsheet into a tracked Bitly short link, plus a QR code when the row asks for one, and writes the results back into that same row.

Trigger on a new Google Sheets row in my campaign links spreadsheet using a poll trigger. When a row fires, use the Google Sheets "Get Values" operation to read that row so I have every column: the destination URL, the campaign source, the campaign medium, the campaign name, an optional custom back half, an optional comma separated list of tags, and an optional QR code tick box.

Assemble the tracking URL first. Append the campaign columns onto the destination URL as UTM parameters (utm_source, utm_medium, utm_campaign), URL encoding each value and preserving any query string the destination URL already carries, so an existing question mark becomes an ampersand. Skip any UTM parameter whose column is empty rather than writing an empty value.

Then call the Bitly "Create a Bitlink" operation with the assembled URL. Set the link title from the campaign name, falling back to the source and medium when the campaign name is blank, and pass the campaign name together with anything in the tags column as the bitlink's tags, so every link for a campaign is grouped in Bitly reporting.

If the row supplies a custom back half, follow up with the Bitly "Add Custom Bitlink" operation to assign that keyword to the new bitlink. Custom back halves require a paid Bitly plan and return a 403 on free accounts, so treat this step as optional: log the failure, keep the standard short link, and carry on with the rest of the row instead of aborting it.

If the QR column is ticked, call the Bitly "Create a QR Code" operation for the new bitlink. Use the full featured trackable QR code operation rather than the static variant, so scans are counted in Bitly analytics, and keep the image URL it returns.

Finish with the Google Sheets "Update Values" operation to write back into the same row: the short link, the QR code image URL when one was created, and a creation timestamp in ISO 8601. Write only those specific cells so nothing else in the row is overwritten, and keep the spreadsheet as the single source of truth for the campaign.

Handle the edges. Skip any row that already has a short link so a re-run never creates a duplicate bitlink. Skip rows with a blank or malformed destination URL. If "Create a Bitlink" itself fails, write the error message into the short link column so I can see at a glance which rows need attention.

Additional information

What does this prompt do?
  • Watches your campaign links spreadsheet and picks up every new row the moment someone adds one.
  • Builds the full tracking link for you by adding the source, medium, and campaign name from that row onto the destination link.
  • Creates a Bitly short link with the campaign title and tags already attached, plus a scannable QR code whenever the row asks for one.
  • Writes the short link, the QR code image, and the creation date straight back into the same row, so your spreadsheet stays the single source of truth.
What do I need to use this?
  • A Bitly account.
  • A Google account with permission to edit the campaign links spreadsheet.
  • A spreadsheet with columns for the destination link, campaign source, medium, and campaign name.
  • Optional columns for tags, a custom link ending, and a tick box for QR codes.
  • A paid Bitly plan if you want custom link endings or your own branded domain. Everything else works on a free plan.
How can I customize it?
  • Rename or reorder the columns to match the sheet your team already uses, including extras like campaign content or search term.
  • Change how link titles and tags are built so every campaign groups the way you report on it.
  • Switch the QR code step off completely, or make it run for every row instead of only the ticked ones.

FAQs

Do I need a paid Bitly plan for this?
No. Short links and QR codes work on a free Bitly account. Custom link endings and branded domains are paid features, so if your plan does not include them the workflow simply keeps the standard short link and carries on rather than failing the row.
What happens to rows that already have a short link?
They are skipped. Only new rows without a short link get processed, so re-running the workflow never creates duplicate links for the same campaign.
Will the QR codes be tracked?
Yes. The workflow creates trackable QR codes, so scans show up in your Bitly reporting alongside link clicks instead of being invisible.
Can I use my own branded domain instead of bit.ly?
Yes, as long as your Bitly plan includes a custom domain. You set the domain once in the workflow and every link created from the sheet uses it.
How soon does the short link appear after I add a row?
The workflow checks your spreadsheet for new rows on a regular schedule, so the link and QR code usually land back in the row within a few minutes.

Related templates

Flag at-risk students in Canvas before they fall behind

Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.

Canvas
Google Sheets
Slack Bot
Agentic Task
Weekly Canvas grading backlog report in Slack and Sheets

Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.

Canvas
Slack Bot
Google Sheets
Deterministic Code
Weekday early alert digest for at-risk students in Slack

Every weekday morning your advising team gets a ranked list of students slipping behind in each course, plus a tracking log that shows whether outreach worked.

Blackboard
Slack Bot
Google Sheets
Agentic Task
Weekly service desk scorecard with a running trend history

Every Monday at 8am, count last week's tickets and SLA results, add one row to a tracking sheet, and post the headlines to Slack.

Jira Service Management
Google Sheets
Slack
Deterministic Code
Chase missing Brex receipts with one friendly Slack DM

Every weekday, each person gets one private nudge listing only their own undocumented card spend, plus an aging report for finance.

Brex
Slack Bot
Google Sheets
Agentic Task
Chase Bitwarden two-factor gaps and unaccepted invites

Every Monday, find the people who never turned on two-factor or never accepted their invite, message them in Slack, and track both numbers.

Bitwarden
Slack Bot
Google Sheets
Deterministic Code

Stop building campaign tracking links by hand.

Add a row to your sheet and get a tagged short link, a QR code, and a timestamp back automatically.