Beiträge

Veröffentlichen Sie Ankündigungen, Veranstaltungen und Angebote auf Google und Facebook mit dem listingsapi-js SDK.

Die Methoden für Beiträge veröffentlichen Inhalte auf Google Business Profile und Facebook. Anschließend können Sie den Veröffentlichungsstatus und die Analysedaten für jede Plattform überwachen. Alle Methoden für Beiträge sind direkt auf der Client-Instanz ListingsAPI verfügbar.

Die Veröffentlichung erfolgt asynchron: Aufrufe zum Erstellen geben status: 'INPROGRESS' zurück, und der Beitrag wird im Hintergrund veröffentlicht. Fragen Sie fetchPost wiederholt ab, bis der Status SUCCESS ist, und prüfen Sie publishDetails[].submissionError auf Fehler bei einzelnen Plattformen.

bulkPublish

Veröffentlichen Sie mit einem einzigen Aufruf einen Beitrag auf Google und Facebook für mehrere Standorte. sites verwendet standardmäßig beide Plattformen. Die Nachricht (oder die Zuordnung pro Plattform) wird in einen Eintrag pro Plattform aufgelöst, Standort-IDs werden automatisch kodiert, und die Nutzdaten werden vor jedem Netzwerkaufruf clientseitig validiert (bei ungültigen Nutzdaten wird sofort ValidationError ausgelöst).

TypeScript
const result = await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809, 16810],message: 'Open until 10pm through the holidays!',mediaUrl: 'https://cdn.example.com/holiday.jpg',ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/holiday-hours',});console.log(result.socialPost.id, result.socialPost.status); // INPROGRESS, publishes async

Übergeben Sie für plattformspezifische Texte ein Objekt als message:

TypeScript
await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809],message: {  GOOGLE: 'Open until 10pm through the holidays. Book online!',  FACEBOOK: 'We are staying open late for the holidays. See you soon!',},});

Optionen

ParameterTypBeschreibung
namestringInterner Kampagnenname (für Kunden nicht sichtbar). Erforderlich.
locationIdsArray<string | number>Standorte, für die veröffentlicht werden soll (numerische oder base64-IDs). Erforderlich.
messagestring oder Zuordnung pro PlattformBeitragstext für alle Plattformen oder eine { GOOGLE, FACEBOOK }-Zuordnung. Erforderlich.
sitesPostSite[]Zielplattformen; Standardwert ist ['GOOGLE', 'FACEBOOK'].
postTypePostTypeANNOUNCEMENT (Standard), EVENT, OFFER, COVID19 oder PRODUCT.
ctaTypePostCtaTypeBOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP oder GET_OFFER. Erfordert ctaUrl.
ctaUrlstringZiel der CTA-Schaltfläche. Erfordert ctaType.
mediaUrlstringÖffentliche Bild-URL, die auf jeder Plattform angehängt wird.
scheduledDatesobject{ startDatetime, endDatetime, removalSites } für die geplante Veröffentlichung bzw. den geplanten Ablauf.
contextInfoobjectVeranstaltungs- oder Angebotsdetails, wenn postType diese benötigt.
additionalFieldsobjectZusätzliche, nicht verschachtelte camelCase-Felder, die unverändert in den Anfragetext übernommen werden.

createAnnouncement

Erstellen Sie einen ANNOUNCEMENT-Beitrag: eine einfache Nachricht mit optionalem CTA und optionalen Medien. Die Methode akzeptiert dieselben Optionen wie bulkPublish mit Ausnahme von postType und contextInfo; hier ist der Standardwert für sites ['GOOGLE'].

TypeScript
await client.createAnnouncement({name: 'Grand Opening',locationIds: [16808],message: 'Acme Dental is now open in the Mission!',sites: ['GOOGLE'],ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/opening',});

createEvent

Erstellen Sie einen EVENT-Beitrag mit einem Titel und einem Zeitraum mit Beginn und Ende. title ist erforderlich (Google verlangt diese Angabe); startDay und endDay sind Datumsangaben im Format YYYY-MM-DD, und startTime/endTime sind optionale Uhrzeiten zur Anzeige. Der Standardwert für sites ist ['GOOGLE'].

TypeScript
await client.createEvent({name: 'Live music',locationIds: [16808],message: 'Join us Friday for live jazz!',title: 'Jazz Night',startDay: '2026-08-01',endDay: '2026-08-01',startTime: '7:00pm',endTime: '10:00pm',});

createOffer

Erstellen Sie einen OFFER-Beitrag mit einem Gutschein, einem Rabatt und Bedingungen. title ist erforderlich; alle anderen Angebotsfelder sind optional. Der Standardwert für sites ist ['GOOGLE'].

TypeScript
await client.createOffer({name: 'Summer sale',locationIds: [16808],message: '20% off whitening all week!',title: 'Summer Sale',couponCode: 'SUMMER20',discount: '20%',redeemUrl: 'https://example.com/sale',termsConditions: 'One per customer.',startDay: '2026-08-01',endDay: '2026-08-07',});

Angebotsoptionen

ParameterTypBeschreibung
titlestringAngebotstitel. Erforderlich.
couponCodestringCode, den Kunden einlösen.
discountstringRabattbeschreibung, zum Beispiel '20%'.
redeemUrlstringLink zur Online-Einlösung.
termsConditionsstringText der Geschäftsbedingungen.
startDaystringBeginn der Angebotsgültigkeit, YYYY-MM-DD.
endDaystringEnde der Angebotsgültigkeit, YYYY-MM-DD.

createPost

Erstellen Sie einen Beitrag aus einem unverarbeiteten Anfragetext mit nicht verschachtelten Feldern, ohne clientseitige Validierung. Die Methode bettet Ihre übergebenen Daten in das von der API benötigte input-Objekt ein, sodass der übertragene Anfragetext {"input": {...}} lautet; ein vollständig unverschachtelter Anfragetext wird mit dem HTTP-Status 400 abgelehnt. Verwenden Sie vorzugsweise createAnnouncement, createEvent oder createOffer, die diesen Anfragetext für Sie erstellen und validieren.

TypeScript
await client.createPost({postName: 'Grand Opening',locationIds: ['TG9jYXRpb246MTY4MDg='],postType: 'ANNOUNCEMENT',postSites: ['GOOGLE'],postMessage: [{ site: 'GOOGLE', message: 'We are now open!' }],});

fetchPost

Rufen Sie einen Beitrag mit seinem Inhalt, dem Veröffentlichungsstatus pro Plattform und den Analysedaten ab. Verwenden Sie diese Methode, um einen INPROGRESS-Beitrag wiederholt abzufragen, bis er veröffentlicht ist.

TypeScript
let post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg=='); while (post.status === 'INPROGRESS') {await new Promise((resolve) => setTimeout(resolve, 5000));post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg==');} for (const detail of post.publishDetails ?? []) {if (detail.submissionError) {  console.log('failed:', detail.submissionError);}}

deletePost

Löschen Sie einen Beitrag und entfernen Sie ihn von allen Plattformen, auf denen er veröffentlicht wurde.

TypeScript
await client.deletePost('U29jaWFsUG9zdDo0NDEyMg==');

fetchLocationPosts

Listen Sie Beitragskampagnen auf, die auf einen Standort ausgerichtet sind. Die Methode verwendet Offset-Paginierung (page und perPage) und liefert nach Abschluss postsByLocation.

Diese Route lehnt tag ab, daher akzeptiert das SDK die Option seit Version 0.3.2 aus Gründen der Abwärtskompatibilität, überträgt sie aber nie. Verwenden Sie fetchLocationBulkPosts, wenn Sie nach Tags filtern müssen.

TypeScript
const posts = await client.fetchLocationPosts(16808, { page: 1, perPage: 10 });

Optionen

ParameterTypBeschreibung
tagstringWird akzeptiert, aber bei dieser Route nicht gesendet. Siehe den Hinweis oben.
pagenumberSeitennummer (beginnend bei 1).
perPagenumberErgebnisse pro Seite.
filtersobjectFilterfelder für Beiträge (werden automatisch als JSON kodiert).
sortFieldsobjectSortierobjekt wie { field: 'created_at', order: 'Descending' }.

fetchBulkPost

Rufen Sie eine Sammelkampagne mit Veröffentlichungsstatus und Analysedaten pro Standort ab.

TypeScript
const bulk = await client.fetchBulkPost('QnVsa1Bvc3Q6OTk=');

fetchLocationBulkPosts

Listen Sie Sammelkampagnen (für mehrere Standorte) auf, die einen Standort einschließen. Die Methode akzeptiert dieselben Optionen wie fetchLocationPosts.

TypeScript
const campaigns = await client.fetchLocationBulkPosts(16808, { page: 1, perPage: 10 });