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

- Workflow type: code
- Services: Bitly, Google Sheets
- Categories: Marketing, Operations
- Published: 2026-08-04

## What it does

- 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 you'll need

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

## Prompt

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.

## How to customize

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

## FAQ

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

Use this prompt in General Input: https://www.generalinput.com/prompts/turn-new-spreadsheet-rows-into-tracked-bitly-links-and-qr-codes