Render RSOC blocks
After Install, call _raasCsa("relatedsearch", pageOptions, block1, …) from an inline script. The _raasCsa stub in <head> queues the call until the bundle is ready.
Example
<head> same as Install. <body>: pageOptions, block object(s), then _raasCsa.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Related search on content</title>
<script type="text/javascript" charset="utf-8">
(function (g, o) {
g[o] =
g[o] ||
function () {
(g[o].q = g[o].q || []).push(arguments);
};
g[o].t = Date.now();
})(window, "_raasCsa");
</script>
<script
async
src="https://cdn.ace1m.com/raas/v1/raas.global.js"
data-tenant-id="YOUR_ACE1M_TENANT_ID"
data-tenant-key="YOUR_ACE1M_TENANT_KEY"
data-allocated-channels='["ch1","ch2","ch3","ch4","ch5"]"
data-verbose="false"
></script>
</head>
<body>
<p>Page content</p>
<div id="afscontainer1"></div>
<script type="text/javascript" charset="utf-8">
var pageOptions = {
pubId: "your-client-id",
styleId: "1234567890",
relatedSearchTargeting: "content", // required for RSOC (Related Search on Content) blocks
resultsPageBaseUrl: "https://www.example.com/search",
resultsPageQueryParam: "q",
hl: "en",
};
var rsblock1 = {
container: "afscontainer1",
relatedSearches: 6,
};
_raasCsa("relatedsearch", pageOptions, rsblock1);
</script>
<p>More page content</p>
</body>
</html>
For the full list of page-level and unit-level fields for pageOptions and each block, see the Google CSA reference.
Key pageOptions fields
| Field | Required | Why it matters |
|---|---|---|
pubId | Yes | Your CSA client id. |
styleId | No | Custom style id for related-search units. If omitted, Google uses a system default style. |
relatedSearchTargeting | Yes | Must be "content" for RSOC pages. |
resultsPageBaseUrl | Yes | Base URL for the search results page users land on after clicking a term. |
resultsPageQueryParam | No | Query param name on that results page (default is q). |
Key block fields
| Field | Required | Why it matters |
|---|---|---|
container | Yes | Target element id where the unit renders. |
relatedSearches | No | Number of related terms to request. |
adLoadedCallback | No | Optional callback for load/impression handling. |
adLoadedCallback example
Test your callback logic and handle errors so it never breaks page rendering.
var rsblock1 = {
container: "afscontainer1",
relatedSearches: 6,
adLoadedCallback: function (
containerName,
adsLoaded,
isExperimentVariant,
callbackOptions,
) {
if (adsLoaded) {
try {
console.log(
"RS loaded",
containerName,
isExperimentVariant,
callbackOptions,
);
} catch (e) {
console.error("Error in adLoadedCallback", e);
}
return;
}
console.log("There is no RS coverage from Google");
},
};
For all other fields and edge-case behavior, use the Google CSA reference.