Skip to main content
Integrate Pugpig Bolt with BeyondWords to generate audio and/or video from your articles and distribute them through Pugpig apps. BeyondWords is the AI text-to-speech provider; Pugpig communicates with BeyondWords via the API and player API, streaming the same audio URLs you use on the web. Pugpig also maintains integration documentation at BeyondWords text to speech (Pugpig docs). This guide covers the BeyondWords side of the setup.
Pugpig needs your BeyondWords Project ID to get started. Find it in Settings → Integrations → API in your project dashboard.

How it works

There are two common ways content reaches BeyondWords from Pugpig. Most publishers use one or both, depending on how their Bolt edition is configured.
PathHow content flowsBeyondWords setup
Pugpig feed (most common)BeyondWords polls your Pugpig edition feed and imports articlesRSS Feed ImporterJSON (Pugpig)
Pugpig Express APIPugpig calls the BeyondWords API whenever a post is created or updatedText-to-Speech plugin in Pugpig Express + webhook
For native app playback, both paths typically need a webhook. When BeyondWords finishes processing an article, it notifies Pugpig. Pugpig then fetches the generated audio via the player API and includes it in the app feed.

How Pugpig uses your audio

Once audio is available, the Pugpig Bolt Text-to-Speech plugin (via Pugpig Express) distributes it as follows—see Pugpig’s integration doc for full detail:
  • narration_url—added to the content.html page in the app edition
  • audio_meta_data—title and image URL added to the atom feed
Pugpig calls the BeyondWords player API and uses the audio array from the response. It uses the entry with content_type: audio/mpeg (the .mp3 file) and ignores the application/x-mpegURL stream (.m3u8).
If audio has not finished generating when Pugpig first fetches the player API, the audio array may be empty. Pugpig can fetch again when the article is subsequently updated, or once the audio.updated webhook fires and Pugpig re-queries the API.

Choose your integration path

Pugpig feed path

Use this when your Pugpig edition exposes a JSON (Pugpig) feed—the most common setup for Bolt clients.
  1. Set up the RSS Feed Importer with feed type JSON (Pugpig)
  2. Configure page extraction and field mapping as needed
  3. Optionally enable Restrict to articles marked for audio in Bolt CMS to import only stories with BeyondwordsCreateAudio set in custom_analytics
  4. Configure the webhook so Pugpig apps receive audio when generation completes

Pugpig Express API path

Use this when Pugpig sends content directly to BeyondWords through the Text-to-Speech plugin in Pugpig Express—rather than (or in addition to) the feed importer. Follow the steps below, then configure the webhook.

Pugpig Express API path

1

Copy your project ID

Go to Settings → Integrations → API in your project dashboard and copy the Project ID.
2

Share your project ID with Pugpig

Open the Text-to-Speech plugin in Pugpig Express and paste your BeyondWords Project ID into the relevant field.Pugpig will call the BeyondWords API each time a post is created or updated. See Pugpig’s setup guide for plugin-specific steps.
3

Configure the webhook

See Configure the webhook below — required for Pugpig to know when audio generation is complete.
4

Publish as normal

Publish or update articles in Pugpig as normal. BeyondWords generates audio/video as per your project settings. Once processing completes, Pugpig is notified via webhook and fetches the audio URLs from the player API.

Configure the webhook

Pugpig Express exposes a webhook endpoint that listens for BeyondWords notifications and updates app content once audio is ready.
1

Get your Pugpig webhook URL

Your Pugpig Express site provides a webhook URL in this format:
https://{your-site}.express.pugpig.com/wp-json/pugpig/beyondwords/webhook/audio-update/
Replace {your-site} with your Express site subdomain. Pugpig documents this endpoint in their webhook configuration guide.
2

Add the webhook in BeyondWords

Go to Settings → Webhooks in your BeyondWords project dashboard.Click + Webhook and paste your Pugpig webhook URL into Webhook URL.Toggle Enabled on, then click Save changes.BeyondWords sends an audio.updated event when generation completes successfully.
3

Add request headers (optional)

If Pugpig’s webhook endpoint requires authentication, add the required Header name and Header value pairs in the webhook settings.
4

Enable static IP (optional)

If Pugpig’s endpoint requires IP allowlisting, enable Static IP on the webhook and allowlist the displayed address in Pugpig’s firewall configuration.
Webhook requests are sent from 20.234.8.180 when static IP is enabled.

Fine-tuning

FAQs

Pugpig feed (via the RSS Feed Importer) is the most common path for Bolt edition clients. Pugpig Express API (Text-to-Speech plugin) is used when Pugpig pushes content directly on post create/update. Some publishers use both. Either way, configure a webhook for native app distribution.
Not always. Generation typically takes a few minutes. If Pugpig queries the player API before audio is ready, the audio array may be empty — a known behaviour documented by Pugpig. Once the webhook fires or the article is updated again, Pugpig can fetch the completed audio.
Yes. For the Pugpig feed path, enable Restrict to articles marked for audio in Bolt CMS in the RSS Feed Importer page extraction settings. BeyondWords only imports stories where custom_analytics.BeyondwordsCreateAudio is set in the Pugpig feed.