---
title: "Bulk Post Publishing"
description: "Create and schedule Google Posts for all your locations from one interface — with templates, previews, smart parameters, and AI assistance."
---

Bulk Post Publishing lets you create and schedule Google Posts across multiple locations at once. Instead of composing posts one location at a time, you select all the target listings, write the post once, and publish or schedule it in a single action. For spreadsheet-based workflows, you can also upload a CSV to schedule posts in bulk. This page is part of the Localith [Google Posts scheduling tool](/google-posts-scheduler/).

![Google Business Profile publishing interface with post composer](/images/docs/publishing/bulk-post-publishing--composer.jpg)

## Overview

When you manage dozens or hundreds of locations, publishing the same update to each profile individually is not practical. Bulk post publishing solves this with two paths: the visual post composer for creating one post and pushing it to many locations, and CSV upload for scheduling a large batch of posts with different content per location.

Both paths support updates. CSV upload currently supports updates only, while the visual composer also supports offers and events.

## Before you start

Before publishing in bulk, make sure:

- your Google Business Profiles are connected in Localith
- you know which locations should receive the post
- you have decided the post type: update, offer, or event
- any images you plan to include are ready (JPEG or PNG, minimum 400x300 pixels, up to 5 MB for the composer or publicly accessible URLs for CSV)
- if using Smart Parameters, you know which dynamic variables you want to insert

If you need to publish photos rather than posts, use [Photo Publishing](/docs/publishing/photo-publishing/).

## Visual post composer

This is the standard path for creating a post and pushing it to selected locations.

### Step-by-step

1. Open **Publishing** from the left sidebar.
2. Click **Create post**.
3. **Post to...** — select which locations should receive the post. Click **Edit** to change the selection. You can search by name, address, group, or tag, and select individual locations or click **Select all**.
4. **Post details** — choose the post type: **Update**, **Offer**, or **Event**.
5. Write the **Post description**. Use Smart Parameters like {{name}}, {{phone}}, {{website}}, {{city}}, {{country}}, and {{street}} to make the description dynamic per location. Click **Brainstorm with AI** to generate post ideas.
6. **Upload image** (optional) — add a JPEG or PNG image, up to 5 MB, minimum 400x300 pixels. A live preview appears on the right side showing how the post will look.
7. **Button** (optional) — add a call-to-action button to the post.
8. Click **Next** to proceed to scheduling.
9. **Schedule post** — choose to **Publish now** or **Schedule for later**. If scheduling, select the date and time.
10. Optionally set an **expiration date** to automatically delete the post after a certain period.
11. Confirm and publish or schedule the post.

![Post composer showing location selector, post type tabs, description field with Smart Parameters, and live preview](/images/docs/publishing/bulk-post-publishing--post-composer.jpg "Google Post composer with location selector and scheduling options")

### Post types

- **Update** — general informational posts about your business, promotions, or news
- **Offer** — promotional content with discount details, coupon codes, or special deals
- **Event** — time-sensitive announcements with start and end dates

### Smart Parameters

Smart Parameters let one post template adapt automatically per location. Instead of writing a unique description for every listing, insert variables that Localith fills in with each location's actual data:

- {{name}} — business name
- {{phone}} — phone number
- {{website}} — website URL
- {{city}} — city name
- {{country}} — country name
- {{street}} — street address

For more details, see [Smart Parameters](/docs/publishing/smart-parameters/).

### Brainstorm with AI

Click the **Brainstorm with AI** button inside the post description field to generate post ideas. The AI considers your business category and location data to suggest relevant content angles.

For deeper AI content planning, see [AI Content Planning](/docs/publishing/ai-content-planning/) and [AI Post Generation](/docs/publishing/ai-post-generation/).

### Live preview

As you compose the post, a preview on the right side shows how it will appear on Google. Use this to check formatting, image display, and CTA placement before publishing.

### Draft management

If you are not ready to publish, save the post as a draft. Drafts are stored in the Publishing section where you can reopen and edit them later via **Edit post**.

### Auto-deletion

Posts support expiration dates. Set an expiration to automatically remove old posts after a timeframe — useful for offers that should not stay visible past a promotion period, or events that have ended.

## CSV upload

For large-scale scheduling with different content per location, use the CSV upload workflow.

### Step-by-step

1. Open **Publishing** from the left sidebar.
2. Click **Plan content** in the top-right area.
3. Select **Upload CSV file**.
4. Prepare your CSV file using the required template structure (see below).
5. Upload the file.
6. Review the validation results — Localith checks each row for errors.
7. Fix any validation errors and re-upload if needed.
8. Click **Schedule posts** to queue all valid rows for publishing.

![CSV bulk upload workflow showing the plan content button and file upload interface](/images/docs/publishing/bulk-post-publishing--csv-upload.jpg "Upload a CSV file to schedule posts across multiple locations at once")

### CSV template columns

| Column | Required | Description |
|--------|----------|-------------|
| location_name | Yes | Exact name of the connected Google Business Profile |
| post_content | Yes | Text content of the post |
| publish_date | Yes | Date for publishing (DD/MM/YY, MM/DD/YY, or YY/MM/DD) |
| publish_time_utc | For scheduling | Time in UTC, 24-hour format (HH:MM). Leave blank for immediate publish |
| cta_type | No | Call-to-action type: LEARN_MORE, BOOK, ORDER, SIGN_UP, CALL, or NONE |
| cta_url | No | URL for the CTA button |
| image_url | No | Publicly accessible URL to an image |

### CSV scheduling

- To publish immediately, use today's date and leave publish_time_utc blank.
- To schedule for later, provide both the date and the UTC time.
- All scheduled times are processed in UTC — convert from your local timezone before entering.

### CSV validation

Localith validates each row before scheduling. Common errors include:

- location_name does not match any connected profile
- invalid date or time format
- publish date is in the past
- unrecognized cta_type value
- image_url is not publicly accessible
- cta_url is not a valid URL

If all rows are invalid, the Schedule posts button will be disabled. Fix the errors and re-upload.

### CSV limitations

- CSV upload currently supports GBP updates only — not offers or events. Use the visual composer for those post types.
- All scheduling times must be in UTC.
- Posts require processing before they appear in the published list.

## Tips and best practices

- Use the visual composer when the same content goes to all selected locations — pair it with Smart Parameters for automatic per-location personalization.
- Use CSV upload when each location needs a unique post description or when scheduling a large batch at different times.
- Always check the live preview before publishing — especially when using Smart Parameters to make sure the dynamic values look correct.
- Set expiration dates on offer and event posts to keep profiles clean automatically.
- Save unfinished posts as drafts rather than publishing incomplete content.
- Use [Content Calendar](/docs/publishing/content-calendar/) to visualize your publishing schedule and avoid overlapping campaigns across locations.

## Limits or edge cases

- Image uploads in the visual composer are limited to 5 MB per file, minimum 400x300 pixels, JPEG or PNG only.
- CSV image_url values must point to publicly accessible images — internal URLs or files behind authentication will fail validation.
- Smart Parameters only work in the visual composer. CSV posts use literal text per row.
- Publishing to a large number of locations may take a few minutes to fully process.

## Common questions

**Q: Can I use Smart Parameters in CSV uploads?**

No. Smart Parameters work in the visual post composer only. In CSV uploads, each row contains the literal text for that location's post.

**Q: Can I schedule offers and events via CSV?**

Not currently. CSV upload supports updates only. Use the visual post composer for offers and events.

**Q: What happens if a scheduled post fails?**

Failed posts appear with an error status in the Publishing section. Check the error details — common causes include disconnected profiles or Google API issues.

**Q: Can I edit a post after it is published?**

Published posts can be viewed in the Publishing section. To update a published post, you would need to create a new post to replace it.

**Q: How do I preview posts before bulk publishing?**

The visual composer shows a live preview on the right side as you write. For CSV uploads, review the validation results carefully before confirming — there is no visual preview for CSV posts.
