Party Up Marketing β€” Email System Internal Β· Free Stack Only
Free Automated Outreach

Cold Email System β€” $0/Month

Google Sheets + Google Apps Script + Gmail. Fully automated. Sends Day 0, Day 3, and Day 7 emails without touching anything.

πŸ“Š
Google Sheets
Your lead list + CRM
FREE
βš™οΈ
Apps Script
Auto-sends emails on a timer
FREE
πŸ“§
Gmail
Up to 500 sends/day
FREE
πŸ€–
AMELIA
AI handles replies
FREE

The Math

20
emails/day
β†’
600
contacts/month
β†’
18
replies (3%)
β†’
5-6
booked calls
β†’
2-3
new clients
1

Set Up Your Google Sheet

Go to sheets.google.com β†’ New Sheet β†’ name it Party Rental Outreach. Add a tab called Leads. Set up these exact columns in row 1:

ColumnHeader NameWhat Goes Here
AFirst NameOwner's first name (or "Owner" if unknown)
BBusiness NameFull business name
CEmailTheir email address
DCityCity they're based in
EStatusSee status guide below
FDay0 DateAuto-filled by script
GDay3 DateAuto-filled by script
HDay7 DateAuto-filled by script
INotesAnything you want to remember

Status values to use:

Send
Ready to contact β€” script will send Day 0
Day0-Sent
Day 0 sent, waiting for Day 3
Day3-Sent
Day 3 sent, waiting for Day 7
Day7-Sent
All 3 emails sent β€” sequence done
Replied
They responded β€” AMELIA handles it
Opted-Out
They said STOP β€” never email again
To add leads: Set Status to Send for each new row. The script only touches rows marked "Send", "Day0-Sent", or "Day3-Sent". Everything else is skipped.
2

Open Apps Script

1
In your Google Sheet, click Extensions in the top menu
2
Click Apps Script β€” a new tab opens
3
Delete everything in the editor (Cmd+A β†’ Delete)
4
Paste the script below β†’ click Save (floppy disk icon)
3

The Script β€” Copy & Paste This

Copy the entire script below and paste it into the Apps Script editor.

APPS SCRIPT β€” Full Outreach Automation
// ═══════════════════════════════════════════════
//  PARTY UP MARKETING β€” Automated Cold Outreach
//  Paste into Google Apps Script (Extensions menu)
// ═══════════════════════════════════════════════

var SHEET_NAME      = 'Leads';
var MAX_PER_RUN     = 20;
var YOUR_NAME       = 'Anthony Whitner';
var YOUR_PHONE      = '(313) 205-3355';
var YOUR_SITE       = 'partyupmarketing.com';

// Column positions (must match your sheet exactly)
var COL_FIRST  = 1; // A - First Name
var COL_BIZ    = 2; // B - Business Name
var COL_EMAIL  = 3; // C - Email
var COL_CITY   = 4; // D - City
var COL_STATUS = 5; // E - Status
var COL_D0     = 6; // F - Day0 Date
var COL_D3     = 7; // G - Day3 Date
var COL_D7     = 8; // H - Day7 Date

function runOutreach() {
  var ss    = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(SHEET_NAME);
  if (!sheet) { Logger.log('Sheet not found: ' + SHEET_NAME); return; }

  var data  = sheet.getDataRange().getValues();
  var today = new Date();
  var sent  = 0;

  for (var i = 1; i < data.length; i++) {
    if (sent >= MAX_PER_RUN) break;

    var row      = i + 1;
    var first    = data[i][COL_FIRST  - 1] || 'there';
    var biz      = data[i][COL_BIZ    - 1] || 'your business';
    var email    = String(data[i][COL_EMAIL - 1] || '').trim();
    var city     = data[i][COL_CITY   - 1] || 'your area';
    var status   = String(data[i][COL_STATUS - 1] || '').trim();
    var d0Date   = data[i][COL_D0 - 1];
    var d3Date   = data[i][COL_D3 - 1];

    // Skip invalid or finished rows
    if (!email || !email.includes('@')) continue;
    if (['Replied','Opted-Out','Done','Day7-Sent'].indexOf(status) > -1) continue;

    var dSinceD0 = d0Date ? daysBetween(new Date(d0Date), today) : 0;
    var dSinceD3 = d3Date ? daysBetween(new Date(d3Date), today) : 0;

    if (status === 'Send') {
      var subj = 'I built a free marketing system for '
                 + city + ' party rental businesses';
      sendEmail(email, subj, day0(first, biz, city));
      sheet.getRange(row, COL_STATUS).setValue('Day0-Sent');
      sheet.getRange(row, COL_D0).setValue(today);
      sent++;
      Utilities.sleep(1500);

    } else if (status === 'Day0-Sent' && dSinceD0 >= 3) {
      var subj = 'Quick question about ' + biz;
      sendEmail(email, subj, day3(first, biz));
      sheet.getRange(row, COL_STATUS).setValue('Day3-Sent');
      sheet.getRange(row, COL_D3).setValue(today);
      sent++;
      Utilities.sleep(1500);

    } else if (status === 'Day3-Sent' && dSinceD3 >= 4) {
      var subj = 'Last note β€” Party Up Marketing';
      sendEmail(email, subj, day7(first));
      sheet.getRange(row, COL_STATUS).setValue('Day7-Sent');
      sheet.getRange(row, COL_D7).setValue(today);
      sent++;
      Utilities.sleep(1500);
    }
  }

  Logger.log('Done. Emails sent this run: ' + sent);
}

function sendEmail(to, subject, body) {
  try {
    GmailApp.sendEmail(to, subject, body, {
      name: YOUR_NAME + ' β€” Party Up Marketing'
    });
  } catch(e) {
    Logger.log('Error sending to ' + to + ': ' + e.message);
  }
}

function daysBetween(d1, d2) {
  return Math.floor(Math.abs(d2 - d1) / 86400000);
}

// ── EMAIL TEMPLATES ─────────────────────────────

function day0(first, biz, city) {
  return 'Hi ' + first + ',\n\n'
+ 'I found ' + biz + ' while looking for party rental businesses in '
+ city + '. I run a game truck in Maryland and also help party rental '
+ 'businesses grow through Party Up Marketing.\n\n'
+ 'I built a pre-made AI marketing system specifically for bounce house, '
+ 'game truck, and photo booth businesses. It handles:\n\n'
+ '- Automated follow-up texts after every quote\n'
+ '- AI phone agent that answers calls 24/7\n'
+ '- Google review requests after every event\n'
+ '- Social media posting on autopilot\n'
+ '- Seasonal booking campaigns\n\n'
+ 'I also put together 5 free SMS templates your business can start '
+ 'using today:\nlaunchaigroup.com/party-rental-texts.html\n\n'
+ 'Would you be open to a quick 15-minute call this week? No pitch β€” '
+ 'just showing you what’s there.\n\n'
+ 'Anthony Whitner\n'
+ 'Party Up Marketing\n'
+ YOUR_SITE + '\n'
+ YOUR_PHONE + '\n\n'
+ 'Reply STOP to opt out of future emails.';
}

function day3(first, biz) {
  return 'Hey ' + first + ',\n\n'
+ 'Just following up on my note about Party Up Marketing.\n\n'
+ 'Quick question β€” is the off-season a challenge for ' + biz + '? '
+ 'Most party rental businesses I talk to say fall and winter are the hardest.\n\n'
+ 'I put together a free playbook on keeping bookings coming in during '
+ 'the slow season:\nlaunchaigroup.com/party-rental-off-season.html\n\n'
+ 'Worth a look even if the full system isn’t a fit.\n\n'
+ 'Anthony\nParty Up Marketing β€” ' + YOUR_SITE;
}

function day7(first) {
  return 'Hey ' + first + ',\n\n'
+ 'Last note from me β€” I know you’re busy running events.\n\n'
+ 'Leaving you with something free: 5 SMS templates for party rental '
+ 'businesses that improve quote follow-up and review requests.\n\n'
+ 'No email required:\nlaunchaigroup.com/party-rental-texts.html\n\n'
+ 'If you ever want to see what a full AI marketing system looks like '
+ 'for your business, just reply or call ' + YOUR_PHONE + '.\n\n'
+ 'Anthony Whitner\nParty Up Marketing β€” ' + YOUR_SITE + '\n\n'
+ 'Reply STOP to opt out.';
}
4

Set Up the Daily Trigger

This makes the script run automatically every morning without you doing anything.

1
In the Apps Script editor, click the clock icon on the left sidebar (Triggers)
2
Click + Add Trigger (bottom right)
3
Function to run: runOutreach
4
Event source: Time-driven
5
Type: Day timer β†’ 8am–9am
6
Click Save β†’ authorize with your Google account
That's it. Every morning at 8am the script wakes up, checks your sheet, sends any due emails, and updates the statuses. You don't touch it.
5

Get Your First 50 Leads (Free)

Do this once to build your initial list. Repeat weekly to keep it growing.

1
Go to Google Maps β†’ search "bounce house rental Maryland"
2
Click each business listing β†’ go to their website β†’ find the contact email
3
Add to your sheet: First Name (owner if listed, or "Owner"), Business Name, Email, City β†’ Status = Send
4
Repeat for: "game truck rental Maryland", "photo booth rental Maryland", "bounce house rental Virginia", "bounce house rental DC"
5
Goal: 50 leads to start β€” takes about 45 minutes total
Apollo tip: If you have Apollo.io, search "party rental" + MD/VA/DC and export emails directly. Much faster than manual.
6

Handling Replies with AMELIA

When someone replies to an email, do this:

1
Open Claude.ai β†’ go to your AMELIA Project
2
Paste the reply into AMELIA β€” she classifies it (HOT / WARM / COLD) and writes a 4-sentence response
3
Copy AMELIA's reply β†’ send it from Gmail
4
Update their row in the sheet: Status β†’ Replied + add note in column I
If someone says STOP or unsubscribe: Change their status to Opted-Out immediately. The script will skip them forever. This is required by law.
Party Up Marketing Β· partyupmarketing.com Β· Internal Use Only
Built by Anthony Whitner Β· Launch AI Group