Поделюсь как это сделано у нас, надеюсь поможет
во-первых, сайт заводится в нашей БД и ему присваивается id
во-вторых, сайт вставляет к себе наш код, он небольшой, но делает две вещи:
1. создает временную функцию в window - которая совпадает по имени с нашей функцией запуска, но просто сохраняет себе в массив все вызовы и их аргументы
2. начинает загрузку js-кода нашего виджета
в-третьих, сайт вызывает нашу функцию запуска, куда передает свой id из нашей БД и некоторые параметры
когда наш основной js загрузился, он делает следующее:
1. переписывает в window временную функцию собирающую аргументы на настоящую, которая запускает вставку виджета
2. если собранны запуски до этого момента - запускает их в настоящей функции запуска
3. функция запуска дергает сервер и запрашивает данные по id сайта
4. вставляем на страницу iframe и в нем рисуем виджет
на деле все чуть сложнее, но общий принцип такой