Hey @juicydisorder! 
Great question about the fs-consent-element=“placeholder” functionality!
The placeholder system in Finsweet Cookie Consent inherits its category from the blocked element it’s associated with — it’s not assigned manually to the placeholder itself.
For third-party scripts or embeds, you assign categories with fs-consent-categories
on the blocked element, for example:
<script type="fs-consent" fs-consent-categories="marketing" src="youtube-embed.js"></script>
Available categories: “essential”, “marketing”, “personalization”, “analytics”. You can assign multiple categories by separating them with commas.
How placeholders work:
Add fs-consent-element="placeholder"
to any element you want to show while the content is blocked.
The placeholder automatically shows when consent for the associated category is denied, and hides when consent is granted.
Example: For a YouTube iframe with consent blocking enabled, place a placeholder element in its place or next to it. The iframe stays blocked until consent is given, and the placeholder covers or reveals it accordingly.
Notes:
-
Standard embeds (like iframes) are handled automatically.
-
JavaScript-loaded or dynamically injected content may require custom code.
-
For multiple embeds with different categories, add a separate placeholder for each blocked element.
Regarding your follow up question, there is no recommeneded work around for this issue. Even though our script loads as soon as the page loads, the placeholder element will not be manipulated instantly, rather it will be manipulated one the script is fully loaded and excecuted.
This means that there is a compromise to be made:
-
If you load the placeholder element hidden, there will be a blank space in the page’s layout until the script displays the placeholder in place of the iframe.
-
If you load the placeholder visible, this will be shown even if the user has acceoted the corresponding categories, until the script is fully loaded and the logic to hide the placeholder is excecuted.
Both are valid setups, its up to you to decide which works best for you!
If you can share a staging URL or a Loom video of your setup, we can give you more targeted guidance.
For custom code help, @Support-Luis or @Support-Pedro can assist further.