Skip to main content

Embed Podhoc Podcasts on Your Site — Iframe Widget Documentation

Embed any public Podhoc podcast on your blog, newsroom or course page with a single iframe. 50 KB gzipped, lazy-loaded, plays do not count against your credits. Free for readers, no account required.

Embed your Podhoc podcast on any site in seconds

You publish a podcast on Podhoc. You want it on your blog, in your course module, on your newsroom article, or inside your team wiki. The Podhoc embed is a single iframe — drop it in, your readers press play, and the audio streams from podhoc.com without leaving your page.

Embed grants are owner-only. Only the podcast author can generate an embed snippet for that podcast — the Embed button is server-gated against the podcast’s owner_id and hidden on the Discover detail pages of podcasts you did not author. This keeps attribution clean and gives takedown control to the rightful author.

No account is required for the listener. Anonymous readers hear a 30-second free preview without signing up; pressing “Listen on Podhoc” opens the source page where they can sign in to listen to the full episode (credits applied per the Discover credit matrix). Preview plays are absorbed by Podhoc — they do not consume your credit balance. The player is 50 KB gzipped, lazy-loaded on viewport entry, and renders an “unavailable” placeholder rather than a broken frame if you ever unpublish the source podcast.


How to get your embed code

1. Open YOUR podcast in Podhoc Discover

Visit app.podhoc.com/discover and open one of your own published podcasts. The Embed button is only shown on podcasts you authored, because embed grants are tied to the podcast owner; on Discover detail pages for podcasts you did not author, the Embed CTA is hidden.

2. Click Embed and copy the iframe snippet

On the podcast detail page, click Embed. A modal shows the iframe HTML pre-populated with the canonical podcast slug and the unique embed-grant identifier. Copy the whole snippet. The grant identifier is what Podhoc uses to attribute embed plays back to your account and to manage takedowns; do not strip it from the snippet.

3. Paste the iframe into your site

Drop the snippet into any HTML block — a WordPress Custom HTML widget, a Ghost embed card, a Notion /embed, a Docusaurus MDX page, or plain <iframe> markup in a static site. The player streams from podhoc.com, lazy-loads on first viewport entry, and adds 50 KB gzipped to your page weight.


Example: live embed

Here is the canonical example snippet, pointed at a sample podcast from Discover. Replace the ?podcast=example slug with your own podcast’s slug after step 2 above.

<iframe
  src="https://app.podhoc.com/embed?podcast=example"
  width="100%"
  height="240"
  loading="lazy"
  frameborder="0"
  allow="autoplay; clipboard-write; encrypted-media; picture-in-picture"
  title="Podhoc podcast player"
></iframe>

The loading="lazy" attribute is non-negotiable — it keeps the embed off the network path until the reader scrolls it into view, which is what protects your page-speed scores.


Customisation options

For v1, the iframe ships visually fixed at 100% width × 240 px height with the Podhoc brand palette. The following knobs are on the roadmap and will be documented here when they ship:

  • Coming soon: width — a ?w= query param to override the default container width.
  • Coming soon: height — a ?h= query param for compact / expanded layouts.
  • Coming soon: theme?theme=light|dark|auto to match your site’s colour scheme.

Until these land, the embed is intentionally simple — one snippet, no tuning, works the same on every page.


Performance

  • Bundle size: 50 KB gzipped for the first embed on a page. Subsequent embeds on the same page only add the per-podcast metadata blob (~2 KB each), not the full player code.
  • Lazy-loading: the iframe sets loading="lazy" by default. The browser delays the network request until the reader scrolls the player into view, so an embed below the fold costs zero bytes until it is needed.
  • Streaming: audio is served via the same CloudFront distribution that powers app.podhoc.com, with byte-range requests for instant scrubbing.
  • Page-speed impact: in our internal Lighthouse audits, a page with one Podhoc embed scores within 1 point of the same page without the embed when the snippet stays below the fold.

Anti-abuse — 100 plays / day / host

To keep public Discover streaming sustainable without billing the embedder, Podhoc applies a soft rate limit of 100 plays per day per host. The limit is per embedding domain, not per podcast — if you host ten embeds on myblog.example, the entire domain shares the 100-play-per-day budget.

In practice:

  • The first 100 plays on a calendar day stream normally.
  • Beyond that, the player still loads and shows the podcast metadata, but presents a friendly “Daily limit reached — try again tomorrow, or open in Podhoc” message.
  • The counter resets at midnight UTC.

If you have a legitimate need for a higher limit (a popular newsroom, a high-traffic course platform), contact us via the support page — we maintain an allowlist for trusted embedders.


Frequently asked

The FAQ block below mirrors the faqs: block in the page front-matter, which is what Hugo emits as structured data for search engines and AI overviews.


  • Pricing — credit packs and subscription tiers (embed plays do not consume your credits).
  • Privacy — what we log when a reader presses play on an embed.
  • Terms — acceptable-use rules for the embed widget.
  • Discover — browse public podcasts and grab embed codes.

Browse Discover and grab an embed code →

Frequently asked questions

Can I embed any Podhoc podcast on my site?
No — you can only embed podcasts you authored. The Embed button is server-gated against the podcast owner_id; on Discover detail pages for podcasts you did not author, the Embed CTA is hidden. This keeps the embed grant attached to the author for analytics, takedowns, and revenue attribution.
Does my reader need a Podhoc account to play the embed?
No. The embed serves the public Discover surface — anonymous readers hear a 30-second free preview without signing up. To listen to the full episode they must press the “Listen on Podhoc” CTA in the player, which opens the source page where they can sign in and have credits applied. The preview is always free for the listener.
Are plays from my embed counted against MY credits?
No. Preview plays on your embed are absorbed by Podhoc — your credit balance is untouched whether one reader or one thousand listen. The 100 plays / day / host throttle (below) is a sanity guard for hot-link abuse, not a per-podcast quota.
Can I embed multiple podcasts on the same page?
Yes. Each iframe is independent — drop as many as you like on a page. They share the same lightweight player code, so the second and subsequent embeds only add the per-podcast metadata, not the full 50 KB.
What analytics do I get?
For v1, none on the embed side. Plays are counted at the Discover level (a top-tracks board is on the roadmap for the publishing author). Your own analytics platform (GA4, Plausible, Fathom) can track clicks and visibility on the iframe container.
How do I remove an embed if I change my mind?
Two options. Either delete the iframe from your page — the player disappears immediately — or unpublish the podcast from Podhoc Discover. An unpublished podcast renders an “unavailable” placeholder inside any in-the-wild embed instead of 404-ing, so readers see a graceful message.
Is autoplay supported?
No. Browsers block autoplay for cross-origin iframes by default, and Podhoc respects that. Readers must press play. The embed honours the rest of the standard player controls — scrub, speed, transcript toggle.
What is the default iframe size, and can I customise it?
The default snippet is 100% width × 240 px height — slim enough for sidebars, wide enough for full-width blog bodies. Width, height, and a forthcoming theme (light / dark / auto) are on the roadmap; for v1 the snippet ships responsive-by-default but visually fixed.
Can I customise the colours to match my brand?
Not yet. Theme controls (light / dark / auto, accent colour) are documented in the “Customisation options” section below as “Coming soon”. The v1 embed uses the Podhoc brand palette to keep authorship attribution clear.