Vibrant Performance Sponsorship
Restricted Access
Enter the password to view this page.
VP Sponsorship System
A comprehensive guide to managing Vibrant Performance's sponsorship program, from application intake to agreement signing and parts fulfillment.
Process Applications
Review incoming applications, check AI scores and summaries, and make qualification decisions.
Create Agreements
Generate contracts, collect partner info, and send for e-signature via PandaDoc — fully automated.
Manage Orders
Track parts requests from submission through delivery. Partners submit via checkbox — no authorization needed.
Invite Sponsors
Proactively invite potential sponsors to join the program.
Integrations
The system connects Google Sheets, Google Forms, Mailchimp (email automations), Asana (task tracking), PandaDoc (e-signatures), and Google Gemini (AI summaries).
Quick Start
Get up and running with the VP Sponsorship System in minutes.
Open the Sponsorship Intake Spreadsheet
This is your command center. All sponsorship data flows through here.
Open Spreadsheet ↗Verify the Menu Appears
Look for 🎯 VP Sponsorship in the menu bar. If you don't see it, refresh the page and wait a few seconds.
Check Your Tabs
You should see these tabs at the bottom of the spreadsheet:
Pro Tip
Hover over any column header in the Agreement Terms tab to see helpful descriptions of what each field means.
Permissions
Both Bruno and Melanie should have Editor access to the spreadsheet, agreement template, and output folder. If you get a "No item with the given ID" error, run shareSystemResourcesWithDefaults() from the Apps Script editor.
| Resource | Purpose | Link |
|---|---|---|
| Intake Spreadsheet | Main command center — applications, orders, agreements, invites | Open |
| Agreement Template | Google Doc template for sponsorship agreements | Open |
| Parts Request Template | Template spreadsheet cloned for each partner | Open |
| Public Master Data | Product catalog & pricing — source for parts requests | Open |
| Cost Calculator | Internal cost/MSRP calculations | Open |
| Agreement Info Responses | Form responses for partner address/phone/apparel | Open |
| PandaDoc Dashboard | Track e-signature status | Open |
Processing Applications
New applications arrive automatically in the Form Responses 1 tab. Here's how to process them.
Application Arrives Automatically
When someone submits the Google Form, a new row appears in Form Responses 1. The system automatically assigns an Application ID, scores it, generates an AI summary, adds the contact to Mailchimp, and creates an Asana task.
Review the Score & AI Summary
Check the Score Total, Score Breakdown, and AI Summary columns. The score is based on social media reach, content quality, event participation, and more. The AI summary provides a quick assessment of the partner's fit.
Make Your Decision
Set the Stage column to trigger the appropriate action:
| Qualified - Send Parts Request | Approved! System creates parts request sheet, emails partner, adds Mailchimp tag, updates Asana. |
| On Hold | Need more info or time. System tags contact and sends a holding email. |
| Declined | Not a fit. System sends polite decline email via Mailchimp. |
Use the Override Decision Column
To change a partner's status at any time — even after they've been previously processed — use the Override Decision column. Options include Force Qualified, Force Declined, and Force Hold.
Overrides Always Work
Overrides bypass the "already processed" check. If a partner was previously On Hold and you now want to qualify them, simply set Override Decision to Force Qualified. The system will reset the processing flag and run the full qualification flow.
Important
Changing the Stage or Override Decision triggers automatic emails via Mailchimp. Make sure you're ready before changing it!
Creating Agreements
Generate professional sponsorship contracts and collect e-signatures automatically via PandaDoc.
Create Agreement Terms
Select the partner's row in Form Responses 1, then:
Choose the partner tier: Education, Exposure, or Ambassador. A row is created in the Agreement Terms tab with default values based on the tier.
Partner Receives Info Form
The system automatically sends an email (via Mailchimp tag vp-agreement-info) asking the partner to provide their legal name, address, phone number, and apparel sizing.
Partner Info Syncs to Agreement Terms
When the partner submits the form, their details automatically populate in the Agreement Terms tab. Status updates to Info Received.
Review & Customize Terms
Go to the Agreement Terms tab and verify all details. You can adjust commercial terms (discount %, MSRP cap, max orders), milestone windows, paid media settings, and select the Vibrant signer (Bruno or Melanie).
Generate Agreement Document
Select the row in Agreement Terms tab, then:
This creates a Google Doc from the agreement template with all terms filled in, exports it to PDF, and saves both to Google Drive. Status updates to Generated.
Send for Signature via PandaDoc
With the row selected in Agreement Terms:
This is fully automated — one click does everything:
- Uploads the PDF to PandaDoc
- PandaDoc auto-detects 6 signature fields (signature, initials, and date for both Partner and Vibrant)
- Sends the document to the partner for signing
- Partner signs first, then Vibrant signs second
- Status updates to Sent for Signature
| Status | Meaning | Next Action |
|---|---|---|
| Draft | Terms created in Agreement Terms tab | Wait for partner to submit info form |
| Info Requested | Email sent to partner via Mailchimp | Wait for partner response |
| Info Received | Partner submitted address, phone, etc. | Review terms, then generate document |
| Generated | PDF created in Google Drive | Send for signature |
| PandaDoc Draft | Uploaded to PandaDoc but not yet sent | Retry sending (click Send for Signature again) |
| Sent for Signature | Waiting for Partner → then Vibrant to sign | Wait — track in PandaDoc |
| Signed | Fully executed by both parties | 🎉 Done! |
PandaDoc E-Signature Details
The agreement PDF contains embedded field tags that PandaDoc automatically detects: signature boxes, initials, and date fields for both the Partner and Vibrant signer. The partner signs first (order 1), then the selected Vibrant representative signs second (order 2). No manual field placement needed in PandaDoc.
Managing Orders
Track parts requests from submission through delivery. All orders are tracked in the Orders tab.
Parts Request Sheet Created Automatically
When a partner is qualified, the system automatically creates their personal Parts Request spreadsheet (a copy of the parts request template with pricing from the Public Master Data) and emails them the link.
Partner Fills in Their Parts List
The partner opens their spreadsheet, browses the product catalog, and adds quantities for the parts they want.
Partner Checks the Submission Checkbox
When done, the partner checks the checkbox in cell L2 of their Parts Request sheet. That's it — no buttons, no authorization prompts, no scripts to approve.
System Detects Submission & Notifies You
Every 10 minutes, the system checks all partner sheets for checked boxes. When detected, it sends an email notification to Bruno and Melanie, updates the Orders tab, tags the partner in Mailchimp, and updates their Asana task.
Select the Partner
Click on the partner's row in Form Responses 1.
Create New Order
A new Parts Request sheet is created and the partner is emailed the link.
| Status | Description |
|---|---|
| New | Parts request sheet created, partner filling it out |
| Received | Partner checked the submission checkbox |
| Approved | Approved for fulfillment |
| Processing | Being prepared for shipment |
| Shipped | Shipped with tracking number |
| Completed | Partner received the order |
Why a Checkbox Instead of a Button?
Google Apps Script buttons require authorization that partners can't easily grant. The checkbox approach requires zero permissions — the partner just checks a box, and our polling trigger detects it automatically.
Inviting Sponsors
Proactively invite potential sponsors to apply for the program. Invites are tracked in the Invites tab.
Open Invite Dialog
Enter Contact Details
Provide name, email, and optionally Instagram handle.
Send Invite
Click Send. The contact is added to Mailchimp with the invite tag, and they receive an email inviting them to apply. The invite is logged in the Invites tab.
Partner Tiers
Understanding the three sponsorship tiers and what each includes in the agreement.
🎓 Education Partner
Entry-level tier focused on educational content creation.
Excludes: Paid media, brand safety, exclusivity
Default: 50% discount, $5,000 MSRP cap, 2 orders/year
📢 Exposure Partner
Mid-tier with paid media and brand safety provisions.
Excludes: Exclusivity, special covenants
Default: Same commercial terms, plus ad whitelisting
⭐ Ambassador
Top-tier with full agreement including exclusivity.
Extras: Exclusivity clauses, special covenants, apparel for up to 5 people
Mailchimp Tags
Reference for all Mailchimp tags and automations used by the system.
| Tag | Triggers When | What Happens | Re-entry? |
|---|---|---|---|
trigger_parts_request |
Partner qualified | Sends parts request email with link to their sheet | ✅ Yes |
trigger_on_hold |
Stage set to On Hold | Sends holding email | ✅ Yes |
trigger_declined |
Stage set to Declined | Sends polite decline email | ❌ No |
vp-agreement-info |
Agreement terms created | Sends agreement info form to partner | ✅ Yes |
vp-order-received |
Partner submits parts request | Sends confirmation email to partner | ✅ Yes |
sponsorship_lead |
New application received | Contact added to audience | — |
| Merge Tag | Content |
|---|---|
*|FNAME|* |
First name |
*|PR_URL|* |
Parts Request sheet URL |
*|APP_ID|* |
Application ID |
*|AG_FRM_URL|* |
Agreement info form URL (pre-filled) |
Merge Tag Limit
Mailchimp merge tags have a 10-character limit. That's why we use short names like AG_FRM_URL and PR_URL.
Troubleshooting
Common issues and how to resolve them.
Cause: The user doesn't have access to a Google Drive resource (template doc or output folder).
Fix: Run shareSystemResourcesWithDefaults() from the Apps Script editor. This shares the agreement template, output folder, and parts request folder with both Bruno and Melanie.
Manual fix: Share the specific file/folder with the user's email as Editor.
Old behavior (fixed in V4.9): Overrides were blocked if the row had already been processed.
Current behavior: Overrides now automatically reset the "Auto Action Completed" flag and process the action. If you're still on an older version, manually clear column BA (Auto Action Completed) to FALSE, then re-apply the override.
Possible causes:
- Contact already has the Mailchimp tag (tag won't re-trigger unless re-entry is enabled)
- Contact not subscribed in Mailchimp
- "Re-enter flow" is disabled in the Mailchimp automation
- Email was "cleaned" in Mailchimp due to bounces
Fix: In Mailchimp, remove the tag from the contact, then re-add it. Or enable "Contacts can re-enter flow" in the automation settings.
Check Script Properties:
-
AGREEMENT_INFO_FORM_ID— Should start with 1FAIpQL... -
AGREEMENT_INFO_FORM_APPID_ENTRY— Entry ID for Application ID field -
AGREEMENT_INFO_FORM_COUNTRY_ENTRY— Entry ID for Country field
To get correct IDs: Open the Google Form → ⋮ → Get pre-filled link → Copy the generated URL and extract the entry IDs.
Check: Make sure cell A1 in the Agreement Terms tab says exactly Application ID — no extra spaces or invisible characters.
Diagnose: Run debugApplicationIdLookup() from the script editor to check what's in that cell.
Backfill: If submissions were missed, run testProcessSpecificRow() for each missed form response row.
Test connection: Run testPandaDocConnection() from the script editor.
Test field tags: Run testPandaDocFieldTags() to upload a test PDF and verify all 6 fields are detected.
Common issues:
- Missing
PANDADOC_API_KEYin Script Properties - Using Sandbox API key instead of Production (Sandbox restricts email domains)
- Status shows "PandaDoc Draft" — click Send for Signature again to retry
- Field tags not detected — ensure the tag text exists in the PDF (white/invisible is fine, but it must be there)
The email address doesn't exist in your Mailchimp audience.
Causes: Email was changed in the spreadsheet but not in Mailchimp, contact was deleted, or there's a typo.
Fix: Add the contact to Mailchimp manually with the correct email address.
Need More Help?
Check the Apps Script Execution Log: Extensions → Apps Script → Executions. Look for [ERROR] entries for detailed error messages and stack traces.
