Bulk Social Media Scheduling
This SOP covers the end-to-end process for scheduling bulk posts on GBP and Meta using GHL’s CSV upload. Follow the steps in order. The process is the same for both platforms except where noted.
Quick Reference Checklist
Use this as a pre-publish checklist before scheduling any batch of posts.
| # | Step | Check |
|---|---|---|
| 1 | Graphics created in Canva | Named MM DD YYYY, design titled [PLATFORM] – MM YYYY |
| 2 | Folder uploaded to GHL Media Storage | Folder title matches design name |
| 3 | Correct bulk upload sheet opened | GBP sheet or Meta sheet |
| 4 | Latest worksheet duplicated and renamed | Current month name |
| 5 | Spreadsheet rows filled in | Only one media column populated per post |
| 6 | Worksheet downloaded as CSV | |
| 7 | CSV uploaded in GHL via + New Post | |
| 8 | Previews reviewed | Check copy, media, post type |
| 9 | Posts scheduled |
Step-by-Step Instructions
Step 1: Create graphics in Canva
Create all graphics for the batch in a single Canva design. Related SOP: https://bahousecleaning.com/office-knowledge-base-2/social-media-content-creation/
Step 2: Upload graphics to GHL Media Storage
Upload the completed graphics as a folder so URLs are ready before you touch the spreadsheet.
- Go to GHL > Media Storage > Graphics > Socials, or use this link: GHL Media Storage
- Create a new folder. Name it the same as the Canva design (e.g. META – 07 2026).
- Upload all graphics into that folder. Once uploaded, each file gets a URL. You will copy these URLs into the spreadsheet in Step 5.
| Note: To get a file’s URL in GHL Media Storage: open the file and copy the link from the URL or share icon. This is what goes in imageUrls or videoUrls in the spreadsheet. |
Step 3: Open the correct bulk upload spreadsheet
There are two separate sheets, one per platform. Open the one that matches your current batch.
- GBP: Open GBP bulk upload sheet
- Meta: Open Meta bulk upload sheet
- Both files are also accessible in Drive under: BAHC > Marketing > Social Media
Step 4: Duplicate the latest worksheet and rename it
- Right-click the most recent worksheet tab and select Duplicate.
- Rename the new tab to the current month (e.g. July).
- Clear the data rows from the duplicate, keeping the first two header rows intact.
Step 5: Fill in the spreadsheet
Fill in one row per post. The columns differ slightly between platforms. Column explanations are in the reference tables below.
Meta columns
| Column | What to fill in | Notes |
|---|---|---|
| postAtSpecificTime | Date and time for the post | Format: YYYY-MM-DD HH:mm:ss (e.g. 2026-07-06 9:30:00). Use PDT Timezone. |
| content | Caption text for the post | Include emojis and all body copy here. |
| OGmetaUrl | Leave blank | Only used when sharing a link preview. Not needed for image/video posts. |
| imageUrls | URL of the image from GHL Media Storage | Copy the URL from the uploaded file in GHL. Leave blank if posting a video. |
| gifUrl | Leave blank | Only used for GIF posts. |
| videoUrls | URL of the video from GHL Media Storage | Copy the URL from the uploaded file in GHL. Leave blank if posting an image. |
| thumbnailUrl | Leave blank | Optional video thumbnail. Not required. |
| mediaOptimization | TRUE | Allows the platform to optimize delivery timing. Always set to TRUE. |
| applyWatermark | FALSE | Leave as FALSE. |
| tags | Leave blank | Internal Metricool tags. |
| followUpComment | Contact block (see template) | Paste the standard contact block here: phone, email, website. |
| type (Facebook) | post | Always ‘post’ for standard feed posts. |
| type (Instagram) | post | Always ‘post’ for standard feed posts. Use ‘reel’ for video. |
GBP columns
| Column | What to fill in | Notes |
|---|---|---|
| postAtSpecificTime | Date and time for the post | Format: YYYY-MM-DD HH:mm:ss (e.g. 2026-07-06 9:30:00). |
| content | Caption text for the post | Keep GBP copy concise. GBP has a 1,500-character limit. |
| imageUrls | CDN URL of the image from GHL Media Storage | Copy the URL from the uploaded file in GHL. Leave blank if posting a video. |
| gifUrl | Leave blank | Not supported on GBP. |
| v |