Skip to main content

Troubleshooting blank fields and variable codes in documents

Fix contract, Deal Card or invoice fields that print blank or show ${...} codes instead of your booking details.

Written by Antonio Sierra

When a contract, Deal Card or invoice comes out with a gap where information should be — or with a code like ${event.row.startDateFull} printed as text — the cause is almost always one of a few things: the data is empty in Gigwell, the variable isn't in the template, or the variable sits in the wrong place in the template. Use the list below to jump to the right fix.


​

What are you seeing?

  • One field prints empty (announce date, on-sale, a contact, a website) — see "A single field on my contract is coming out blank."

  • A gap with no variable behind it — see "A field is blank because the variable isn't in my template."

  • The variable is right but the field is still empty — see "The variable is right but the field still comes out blank."

  • A ${...} code prints as text — see "My document shows ${...} code instead of the information."

  • A whole expense, schedule, ticket scaling or invoice-line section is empty — see "The expense or schedule table on my contract is blank."

  • Load-in and sound check times never appear — see "Load-in and sound check never populate on my contract."

Whatever the fix, finish by regenerating the document — see "Regenerate after every change" below.


​

A single field on my contract is coming out blank

When one field prints empty, it usually means that field is empty on the booking rather than that the variable is broken. Each of these lives in a specific place, and they're easy to miss:

  • Announce date — open the booking and go to Events > Basic. Fill in the announce date there.

  • On-sale date — this lives under Tickets and Merch on the booking.

  • Venue and production contacts — open the Change tab on the booking and use Add Contact below the venue to attach the contacts you want on the contract.

Once you've filled in the missing data, save the booking and regenerate the contract. Contracts don't pick up booking changes on their own.


​

The variable is right but the field still comes out blank

A variable can only print what's saved somewhere in Gigwell — when the underlying record is empty, the field renders empty.

  1. Work out which record holds that piece of information. Venue details live on the venue contact, artist details on the artist record, buyer details on the buyer contact.

  2. Open that record in Gigwell and look at the specific field.

  3. If it's blank, fill it in and save the record.

  4. Go back to the booking, open the Contract tab, and regenerate the document.

No template change is needed for this — once the value is saved on the record, the same template picks it up on the next generation.

The single most common version of this is the venue website. It has to be saved on the venue contact record; if it's only written into a note or an email somewhere, the variable has nothing to pull.

Also check that the record you filled in is the one actually attached to the booking. It's easy to update a venue or contact record that looks right but isn't the one linked to this particular show — open the booking, confirm which venue and contacts are attached, and edit those.


​

A field is blank because the variable isn't in my template

If a spot on your document is simply empty — no code, no text, just a gap — check whether the variable is in the template at all. A blank space with no variable behind it isn't a merge failure; it's a template that was never asked for that piece of information.

Check whether the variable is there

  1. Go to Settings > Documents & Templates, then Contracts (or Payments, for an invoice template).

  2. Open the template that's selected on the booking.

  3. Use the Google Doc's find function to search for the field you're missing — for example a website, a load-in time, or a counter-signer address.

  4. If nothing comes up, the variable isn't in the template.

Add the variable

  1. In the Google Doc, put your cursor where you want the information to appear.

  2. Type the variable in ${...} form. The easiest way to get the name right is to copy a working variable out of one of the standard Gigwell templates and paste it in.

  3. If the field is one that repeats — an expense line, a schedule row, a ticket tier — put it inside a table row and keep the .row. segment in the variable name. If it's a one-off value, keep it out of a table and leave .row. off.

  4. Save the Google Doc.

  5. Go back to the booking, open the Contract tab, and regenerate the document.


​

My document shows ${...} code instead of the information

When a merge field prints as literal text on your contract, Deal Card or invoice, the variable didn't resolve. Nine times out of ten there's a stray .row. segment in it.

  1. Read the code exactly as it appears on the document, dots included.

  2. If it contains .row., go to Settings > Documents & Templates > Contracts (or Payments, for an invoice template) and open the template the document was generated from.

  3. Find that variable in the Google Doc and look at where it sits.

  4. If it is not inside a table row, delete the .row. segment. ${event.row.startDateFull} becomes ${event.startDateFull}.

  5. Save the Google Doc.

  6. Go back to the booking, open the Contract tab, and regenerate the document.

The rule is simple: keep .row. only on variables that live inside a repeating table row — the ones that produce one line per expense, per show date, per ticket tier. Outside a repeating table there is nothing for Gigwell to repeat, so it gives up and prints the code as plain text.

If you recently dragged a variable to a new spot on a Deal Card or contract, or retyped one by hand, that's the usual way this starts. Either put it back in the table or strip the .row., whichever matches what you want the section to do.


​

The expense or schedule table on my contract is blank

If your expenses, performance schedule, ticket scaling or invoice lines don't appear on the generated contract — even though the data is filled in on the booking — the problem is almost always where the variables sit in your Google Doc template. Repeating data only renders when the variable that produces each row sits inside a nested table row. If the variable is sitting in the document as loose text, Gigwell has nowhere to repeat it and the section comes out empty.

  1. Open the Google Doc template that's selected on the booking's Contract tab.

  2. Find the row-level variable for the section that's coming out blank — the expenses, schedule, ticket scaling or invoice line variable.

  3. Check whether it's inside a table row or sitting as plain text in the body.

  4. If it's plain text, insert a table and move the variable into a row inside it. A borderless table works perfectly — that's exactly how the standard Gigwell templates are built, which is why the borders aren't visible in the finished contract.

  5. Save the Google Doc.

  6. Back on the booking's Contract tab, regenerate the contract.

Only billable expenses render on the contract. If a cost is marked non-billable, it stays off the document by design — so a missing line may be a billable flag rather than a template problem.


​

Load-in and sound check never populate on my contract

If you fill in load-in and sound-check times on the booking but they come out blank on the contract every time — so you end up typing them by hand — the fix is in how those variables are laid out in your template. Schedule times behave like repeating data, so they belong in a table block rather than as standalone variables in a sentence.

  1. Before you change the template, double-check the times are actually saved on the booking. A correct variable over an empty field still prints nothing.

  2. Go to Settings > Documents & Templates > Contracts and open the template you use.

  3. Find the load-in and sound-check variables in the Google Doc. They'll usually be sitting as loose text in a paragraph.

  4. Replace them with a table block: insert a table, and put the schedule variables inside a table row using the row-level (.row.) form of the variable. A borderless table works perfectly here.

  5. Save the Google Doc.

  6. Go back to the booking, open the Contract tab, and regenerate the document.


​

Regenerate after every change

An existing draft is a snapshot. It keeps whatever the booking and template said when it was created, and it won't refresh itself when you update a record or a template — template edits are never applied to a contract retroactively.

  1. On the booking, open the Contract tab and go to Manage Documents & Signers.

  2. Delete the stale draft with the trash icon.

  3. Click Create Contract (older interface: Create Drafts) to generate a fresh one.


​

If that doesn't work

Check that the template selected on the Contract tab is the one you think it is. Editing a similarly named copy is a common reason a fix appears to do nothing.

If the data is definitely filled in, the variable is definitely correct, and a freshly generated document still comes out blank or shows code — or you'd rather not work inside the Google Doc yourself — message us from the messenger. Tell us the booking, the template name, and the field or exact code you're seeing (in plain English is fine), and we'll add or fix the fields, or place the table in your template for you.


​

Good to know

  • Most templates are Google Docs that you can edit yourself. You'll need to be signed into the Google account linked to your Gigwell account to edit them.

  • HTML templates are the exception; those aren't editable on your side, so message us and we'll make the change.

  • If your agency uses several contract templates, they almost certainly all need the same change. It's worth fixing them all at once rather than one booking at a time.

  • A variable can't invent data. There's no fallback text and no placeholder — an empty source means an empty line on the document.

  • If the information genuinely doesn't have a home in Gigwell, write it into Additional Terms on the booking instead. That's a free-text section that goes straight onto the contract.

  • There's no separate pre-sale date field. Gigwell tracks Announce Date and On-Sale — if you need a pre-sale date on the contract, write it into your additional terms.

  • There's no dedicated Meals toggle alongside travel, ground and accommodation. Cover meals with a standard clause in your template, or as a reusable phrase.

  • There's no automatic escalator or revert logic in Terms, such as bumping a percentage at sell-out. Enter the base split in Terms and write the revert language into your additional terms so it appears in the contract text.


​

Why data doesn't populate into template tabs

If you've used Google Docs tabs to organise a template — a tab per region, a tab per set of banking details — the information won't come through. Gigwell renders one template body per document, and anything sitting on a secondary tab is dropped from the generated PDF entirely.


​

Use separate templates instead of tabs

  1. Go to Settings > Documents & Templates > Contracts.

  2. Make a copy of the template for each version you were trying to build as a tab — one per region, one per set of banking details, whatever the split is.

  3. Move the content from each tab into the main body of its own template. Everything has to live in the main document body to render.

  4. Give each template a clear name so it's obvious which is which in the dropdown.

  5. On the booking's Contract tab, pick the right template before you generate.

It's a little more clicking at generation time, but it's reliable, and the template dropdown is where your team will look for this anyway.


​

Good to know

  • Only the main document body is rendered. This applies to every template type, so it's worth checking any template someone has reorganised recently — content on a tab disappears silently, with no warning and no error.

  • Payment and banking details selected on an invoice can't be shown on the contract. That's a common reason people reach for tabs in the first place. Whoever is paying sees those details after they click Pay Now on the invoice, so they do reach the payer — just not through the contract.

  • If you want banking details printed on the contract itself, write them into the template body or into Additional Terms on the booking as plain text.

  • After restructuring a template, regenerate. Existing drafts keep the old version — delete the stale draft from Manage Documents & Signers on the Contract tab and generate a fresh one.


​

Fixing Phrases or Logistics variables that don't populate

Phrases (also called Dynamic Phrases) are a reusable clause library driven by your booking's logistics settings, so you can keep standard language in one place and merge it into contracts. If those variables come out empty, the first thing to check is whether the feature is switched on for your account.


​

Check whether Phrases is enabled

  1. Open any booking and go to the Terms tab.

  2. Look at the tabs inside Terms for Phrases or Logistics.

  3. If you see them, the feature is on — open the tab, confirm your clause text is filled in for this booking, then regenerate the contract from the Contract tab with Create Contract (older interface: Create Drafts).

  4. If you don't see a Phrases or Logistics tab under Terms, the feature isn't turned on for your account yet.


​

If you don't have the tab

Message us from the messenger and we'll enable Phrases for your account. Once it's on, Phrases appears as its own tab under Terms on every booking, and you can reference your phrases from your contract templates like any other variable.


​

Good to know

  • Phrases are the natural home for language that varies by deal but is otherwise standard — hospitality, ground transport, accommodation, meals. If there's no dedicated field for something on the booking, a phrase is usually the cleanest way to get it onto the contract.

  • Filling in a phrase on a booking doesn't change a contract that already exists. Regenerate the contract afterwards so the new text merges in.

  • Check that the phrase variable in your Google Doc template matches the phrase you've set up. A variable with no matching phrase simply renders as nothing.


​

If you have any questions or need additional help, please reach out to support@gigwell.com or use the chat widget on your screen.

Did this answer your question?