Skip to main content
Office Resources
< All Topics
Print

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.

 

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