Event & Offer Posts
Create event and offer posts via topicType
Event and Offer Posts (topicType)
Google Business Profile supports three post types via platformSpecificData.topicType:
| topicType | When to use | Required fields |
|---|---|---|
STANDARD | Regular updates | None |
EVENT | Announcements with a date range (grand openings, live music, workshops) | event |
OFFER | Promotions and discounts | offer |
Note: For
EVENTposts, Google returns a 400 error ifeventis omitted.
Event Post Example
const { post } = await zernio.posts.createPost({
content: 'Join us for our Grand Opening Weekend! Food, music, and giveaways.',
mediaItems: [
{ type: 'image', url: 'https://example.com/grand-opening.jpg' }
],
platforms: [{
platform: 'googlebusiness',
accountId: 'YOUR_ACCOUNT_ID',
platformSpecificData: {
topicType: 'EVENT',
event: {
title: 'Grand Opening Weekend',
schedule: {
startDate: { year: 2026, month: 5, day: 15 },
startTime: { hours: 9, minutes: 0 },
endDate: { year: 2026, month: 5, day: 16 },
endTime: { hours: 17, minutes: 0 }
}
},
callToAction: {
type: 'LEARN_MORE',
url: 'https://mybusiness.com/grand-opening'
}
}
}],
publishNow: true
});result = client.posts.create_post(
content="Join us for our Grand Opening Weekend! Food, music, and giveaways.",
media_items=[
{"type": "image", "url": "https://example.com/grand-opening.jpg"}
],
platforms=[{
"platform": "googlebusiness",
"accountId": "YOUR_ACCOUNT_ID",
"platformSpecificData": {
"topicType": "EVENT",
"event": {
"title": "Grand Opening Weekend",
"schedule": {
"startDate": {"year": 2026, "month": 5, "day": 15},
"startTime": {"hours": 9, "minutes": 0},
"endDate": {"year": 2026, "month": 5, "day": 16},
"endTime": {"hours": 17, "minutes": 0}
}
},
"callToAction": {
"type": "LEARN_MORE",
"url": "https://mybusiness.com/grand-opening"
}
}
}],
publish_now=True
)curl -X POST https://zernio.com/api/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Join us for our Grand Opening Weekend! Food, music, and giveaways.",
"mediaItems": [
{"type": "image", "url": "https://example.com/grand-opening.jpg"}
],
"platforms": [{
"platform": "googlebusiness",
"accountId": "YOUR_ACCOUNT_ID",
"platformSpecificData": {
"topicType": "EVENT",
"event": {
"title": "Grand Opening Weekend",
"schedule": {
"startDate": {"year": 2026, "month": 5, "day": 15},
"startTime": {"hours": 9, "minutes": 0},
"endDate": {"year": 2026, "month": 5, "day": 16},
"endTime": {"hours": 17, "minutes": 0}
}
},
"callToAction": {
"type": "LEARN_MORE",
"url": "https://mybusiness.com/grand-opening"
}
}
}],
"publishNow": true
}'Offer Post Example
const { post } = await zernio.posts.createPost({
content: 'This weekend only: Save 20% on all services. Use code SAVE20.',
mediaItems: [
{ type: 'image', url: 'https://example.com/save20.jpg' }
],
platforms: [{
platform: 'googlebusiness',
accountId: 'YOUR_ACCOUNT_ID',
platformSpecificData: {
topicType: 'OFFER',
offer: {
offerType: 'OFFER',
redeemOnlineUrl: 'https://mybusiness.com/redeem',
couponCode: 'SAVE20',
termsConditions: 'Valid Fri–Sun only. One per customer.'
},
callToAction: {
type: 'SHOP',
url: 'https://mybusiness.com/services'
}
}
}],
publishNow: true
});result = client.posts.create_post(
content="This weekend only: Save 20% on all services. Use code SAVE20.",
media_items=[
{"type": "image", "url": "https://example.com/save20.jpg"}
],
platforms=[{
"platform": "googlebusiness",
"accountId": "YOUR_ACCOUNT_ID",
"platformSpecificData": {
"topicType": "OFFER",
"offer": {
"offerType": "OFFER",
"redeemOnlineUrl": "https://mybusiness.com/redeem",
"couponCode": "SAVE20",
"termsConditions": "Valid Fri–Sun only. One per customer."
},
"callToAction": {
"type": "SHOP",
"url": "https://mybusiness.com/services"
}
}
}],
publish_now=True
)curl -X POST https://zernio.com/api/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "This weekend only: Save 20% on all services. Use code SAVE20.",
"mediaItems": [
{"type": "image", "url": "https://example.com/save20.jpg"}
],
"platforms": [{
"platform": "googlebusiness",
"accountId": "YOUR_ACCOUNT_ID",
"platformSpecificData": {
"topicType": "OFFER",
"offer": {
"offerType": "OFFER",
"redeemOnlineUrl": "https://mybusiness.com/redeem",
"couponCode": "SAVE20",
"termsConditions": "Valid Fri–Sun only. One per customer."
},
"callToAction": {
"type": "SHOP",
"url": "https://mybusiness.com/services"
}
}
}],
"publishNow": true
}'Language Code Example
By default, post language is auto-detected from text. If auto-detection may be inaccurate (very short posts, mixed-language content, transliterated text), set languageCode explicitly.
const { post } = await zernio.posts.createPost({
content: 'Diese Woche: 20% Rabatt auf alle Services.',
mediaItems: [
{ type: 'image', url: 'https://example.com/promo.jpg' }
],
platforms: [{
platform: 'googlebusiness',
accountId: 'YOUR_ACCOUNT_ID',
platformSpecificData: {
languageCode: 'de'
}
}],
publishNow: true
});result = client.posts.create_post(
content="Diese Woche: 20% Rabatt auf alle Services.",
media_items=[
{"type": "image", "url": "https://example.com/promo.jpg"}
],
platforms=[{
"platform": "googlebusiness",
"accountId": "YOUR_ACCOUNT_ID",
"platformSpecificData": {
"languageCode": "de"
}
}],
publish_now=True
)curl -X POST https://zernio.com/api/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Diese Woche: 20% Rabatt auf alle Services.",
"mediaItems": [
{"type": "image", "url": "https://example.com/promo.jpg"}
],
"platforms": [{
"platform": "googlebusiness",
"accountId": "YOUR_ACCOUNT_ID",
"platformSpecificData": {
"languageCode": "de"
}
}],
"publishNow": true
}'