読む時間

0

読む時間

0

インサイト

2025/11/04

FramerにMarketoフォームを追加する方法

FramerにMarketoフォームを追加すると、リードの収集、問い合わせ、サポートリクエスト、フィードバック収集が簡単になり、カスタマイズ可能なフォームでマーケティング効果を向上させます。

FramerでMarketoフォームを統合し、リード収集と問い合わせ管理を効率的に改善する方法を説明するブログのサムネイルで、Marketoフォームを追加するためのステップバイステップガイドが含まれています。
FramerでMarketoフォームを統合し、リード収集と問い合わせ管理を効率的に改善する方法を説明するブログのサムネイルで、Marketoフォームを追加するためのステップバイステップガイドが含まれています。
FramerでMarketoフォームを統合し、リード収集と問い合わせ管理を効率的に改善する方法を説明するブログのサムネイルで、Marketoフォームを追加するためのステップバイステップガイドが含まれています。

目次

目次

このドキュメントは、Framerを学ぶ日本国内のユーザーが、日本語資料の不足で感じる困難を解決するため、公式ブログの内容を日本語に翻訳し、実務に役立つ情報を追加したものです。Framerを使用する皆様に少しでもお役に立てれば幸いです。

なぜMarketoフォームを追加する必要があるのですか?

FramerのウェブサイトにMarketoフォームを追加することで、潜在顧客を獲得し、マーケティングを効率的に管理できます。
以下の手順に従って、カスタムコードコンポーネントを利用してあなたのサイトに接続してください。

サイトにMarketoフォームを追加する

1. Marketoでフォームを作成する

最初に、Marketoのウェブサイトにアクセスし、ログインまたはアカウントを作成します。該当ガイドを参考にしてカスタマイズしたフォームを作成してみてください。

Marketo의 웹사이트로, 이 사이트에서 폼을 생성하는 방법을 설명합니다.

2. 埋め込み用のコードを取得する

フォームを作成した後、該当ガイドに従って埋め込みコードを発行してください。

Marketo에서 임베드 할 코드를 가져오는 방법을 설명합니다.

3. Framerでカスタムコードコンポーネントを追加する

  1. FramerでAssetsパネルに移動し、「Code」を選択してください。

  2. Create Code File」をクリックし、基本コードを以下のスクリプトに置き換えてください。

import { addPropertyControls, ControlType, RenderTarget } from "framer"
import { useState, useEffect } from "react"
import { SettingsMessage } from "<https://framer.com/m/Utils-QTIc.js@PVRWqcAS5FromVQ03eYl>"

/**
 * @framerDisableUnlink
 *
 * @framerSupportedLayoutWidth any-prefer-fixed
 * @framerIntrinsicWidth 600
 * @framerSupportedLayoutHeight any-prefer-fixed
 * @framerIntrinsicHeight 300
 */
export default function MarketoForm(props) {
    const { embed, style } = props
    const [isEmbedValid, setIsEmbedValid] = useState(false)
    const [formId, setFormId] = useState(null)
    const [script, setScript] = useState(null)
    const [isLoading, setIsLoading] = useState(true)

    if (!embed || embed.length === 0) {
        return (
            <SettingsMessage
                title="Marketo Embed Component"
                description="Enter the Marketo Embed Code here"
                containerStyle={style}
            />
        )
    }

    useEffect(() => {
        setIsLoading(true)
        const embedRegex =
            /MktoForms2\\.loadForm\\("(.+?)", "(.+?)", (\\d+)(?:, .+?)?\\);/
        const embedMatch = embed.match(embedRegex)
        const [, link, value, id] = embedMatch || []

        setFormId(`mktoForm_${id}`)

        const embedFirstLine = `<script src="${link}/js/forms2/js/forms2.min.js"></script>`
        const isValidEmbed =
            embed.startsWith(embedFirstLine) && value && id && link
        setIsEmbedValid(isValidEmbed)

        if (isValidEmbed) {
            const newScript = document.createElement("script")
            newScript.src = `${link}/js/forms2/js/forms2.min.js`
            newScript.async = true

            const handleError = (error, message) => {
                setIsEmbedValid(false)
                setIsLoading(false)
                console.error(message, error)
            }

            const handleScriptLoad = () => {
                try {
                    if (window.MktoForms2) {
                        window.MktoForms2.loadForm(link, value, id)
                    }
                } catch (error) {
                    handleError(error, "Error loading form:")
                }
            }

            newScript.onload = handleScriptLoad
            document.body.appendChild(newScript)
            setScript(newScript)

            try {
                document.body.appendChild(newScript)
                setScript(newScript)
            } catch (error) {
                handleError(error, "Error appending script:")
            }
        }
        setIsLoading(false)

        return () => {
            if (script) {
                try {
                    document.body.removeChild(script)
                } catch (error) {
                    setIsEmbedValid(false)
                    console.error("Error removing script:", error)
                }
            }
        }
    }, [embed])

    return (
        <>
            {isLoading ? (
                <></>
            ) : isEmbedValid ? (
                <>
                    <style>{customCSS}</style>
                    <form id={formId} />
                </>
            ) : (
                <SettingsMessage
                    title="Your embed code is incorrect!"
                    description="Update the Marketo embed form in the component property."
                    containerStyle={style}
                    icon={"🚨"}
                />
            )}
        </>
    )
}

const customCSS = `
    .mktoLabel {
        width: auto !important;
        float: none !important;
        display: block !important;
    }
`

MarketoForm.displayName = "Marketo Form"

addPropertyControls(MarketoForm, {
    embed: {
        title: "Embed Code",
        type: ControlType.String,
        displayTextArea: true,
        description:
            "[Where to find my Marketo embed form](<https://experienceleague.adobe.com/en/docs/marketo/using/product-docs/demand-generation/forms/form-actions/embed-a-form-on-your-website>).",
    },
})

4. 埋め込みコードを入力する

  1. Framerプロジェクトで、先ほど追加したMarketoフォームコンポーネントを選択します。

  2. 右側のプロパティパネルのEmbed Code入力欄に、Marketoからコピーしたコードを貼り付ければ完了です。

FramerでMarketoフォームを活用する例

  • リード獲得: カスタムフォームを使用してメールリストを拡大できます。

  • 問い合わせフォーム: 訪問者が簡単に問い合わせを送ることができるようにし、案内のためにプレースホルダーを追加することをお勧めします。

  • サポートリクエスト: 簡単なフォームでサポートリクエストを整理し、支援を簡素化できます。

  • フィードバック収集: 製品の機能や改善点を収集することができます。

上記のステップに従えば、MarketoフォームをFramerサイトに自然に統合できます。
設定中に問題が発生した場合は、Framerのコンタクトページを通してサポートチームにお問い合わせください。

この投稿は、Framer公式ブログの「Adding Marketo Forms to your site」を翻訳・アダプトしたコンテンツです。

ブログを共有する

ブログを共有する

Framerの
エキスパートになろう

Framerの依頼を受けられるプロなら誰でも応募できます。
仲介手数料はなく、プロとクライアントを直接つなぎます。

Framerの
エキスパートになろう

Framerの依頼を受けられるプロなら誰でも応募できます。
仲介手数料はなく、プロとクライアントを直接つなぎます。

Framerの
エキスパートになろう

フレーマーの受託が可能な専門家なら
誰でも応募可能です。
仲介手数料なしで、専門家とクライアントを
直接つなぎます。