> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tinyfish.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Google Form and Publish It With a Signed-In Account

> Use a saved Browser Context Profile so the agent reuses your Google sign-in

> [!NOTE]
>
> **Capability:** Browser Context Profiles

Creating and publishing a Google Form requires a signed-in Google account —
there's no anonymous path to Google Forms' editor. Signing in fresh on every
run is slow and can trigger extra verification; a profile reuses a browser
session that's already signed in.

## Set Up the Profile

**1. Name the profile**

Go to [Browser Context Profiles](https://agent.tinyfish.ai/profiles) and
click **Create profile**. Give it a name you'll recognize later.

![Name this profile dialog, step 1 of 3, with the Name field focused](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/01-name-profile.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=d58758fb0117adfab6edc04b7a9fc5a0)

Name the profile, then click **Next**.

**2. Choose how to sign in**

Pick **Open a browser and sign in** — TinyFish launches a managed
browser you sign into directly.

![How do you want to set this up dialog, step 2 of 3, with Open a browser and sign in selected](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/02-setup-method.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=792ff864681b2735977259b115e84857)

Choose **Open a browser and sign in**.

**3. Sign into Google in the captured session**

Type a Google domain and tap **Open**, then sign in as you normally
would. TinyFish records the session while you browse.

![Capturing session screen with a website URL field, prompting to enter a domain](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/03-enter-url.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=5e969473d6a97a91af8919fb0551148a)

Enter a Google domain, e.g. `accounts.google.com`, and sign in.

Once signed in, the banner confirms it — click **Save** to store the
session on the profile.

![Signed in to google.com confirmation with the Save button highlighted](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/04-signed-in.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=1e5e2051421c263bb0b1fd31d2928119)

Once signed in, click **Save** to store the session.

**4. Confirm the profile is ready**

The profile page lists every domain it captured a session for. From
here you can also run the agent directly against this profile.

![Saved profile page listing captured domains including google.com, signed in](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/05-profile-saved.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=9afc77891085584f70eb141195daabf5)

Profile saved — `google.com` shows as **Signed in**.

## Run the Agent With the Profile

This is the same goal as the API example below — a form titled "Event RSVP"
with a required short-answer name field and a required multiple-choice
attendance question.

**1. Attach the profile to a goal in the Playground**

Open the [Agent Playground](https://agent.tinyfish.ai/playground/agent),
select the profile from the profile picker next to the goal box, type
the goal, and click **Run**.

![Agent Playground with the saved profile attached next to the Run button, goal set to create an Event RSVP form](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/06-playground-run.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=d38f9e6c2c0040d592865cfce17b855c)

Pick the profile, describe the form, then click **Run**.

**2. Watch it build the form live**

No login prompt — the agent opens Google Forms already authenticated as
the account captured in the profile, then adds the title and each
question.

![Live run view showing the Full name question being added and marked required in Google Forms](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/07-build-form.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=4f954c780e60dd2b602313c2af74742e)

Signed in automatically — the agent adds and configures each question.

**3. Get the published form and its link**

When the run completes, the result includes the shareable link and a
summary of what was created.

![Completed run with a Form Creation Result card showing the shareable link and question summary](https://mintcdn.com/tinyfish/6Yr77veemMps6Ft4/images/agent-tutorial/gform/08-result-link.png?fit=max\&auto=format\&n=6Yr77veemMps6Ft4\&q=85\&s=1f864b2a04b939354d16ff40c234312f)

Run complete — **Open Form** is the published, shareable link.

## Or With the API

```python Python theme={null}
from tinyfish import TinyFish

client = TinyFish()

run = client.agent.run(
    url="https://forms.new",
    goal="""Create a new Google Form titled "Event RSVP" with two questions:
        1. "Full name" — short answer, required
        2. "Will you attend?" — multiple choice with options Yes, No, Maybe, required
        Open the Send settings, publish the form, and return the shareable link.
    """,
    use_profile=True,
    profile_id="prof_abc123def4567890",
)

print(run.result)
```

```typescript TypeScript theme={null}
import { TinyFish } from "@tiny-fish/sdk";

const client = new TinyFish();

const run = await client.agent.run({
  url: "https://forms.new",
  goal: `Create a new Google Form titled "Event RSVP" with two questions:
    1. "Full name" — short answer, required
    2. "Will you attend?" — multiple choice with options Yes, No, Maybe, required
    Open the Send settings, publish the form, and return the shareable link.
  `,
  use_profile: true,
  profile_id: "prof_abc123def4567890",
});

console.log(run.result);
```

Drop `profile_id` and just send `use_profile: true` to use the account's
default profile instead of a specific one.

## Common Mistakes

> [accordion] use\_profile: true with no default profile
>
> This returns `400` if the account has no default Browser Context Profile
> yet. Create one and set it as default first, or pass an explicit
> `profile_id` instead. Full error table: [Common errors](https://docs.tinyfish.ai/agent/api/profiles/browser-context-profiles.md#common-errors).

> [accordion] Session looked captured but the run still hits a login wall
>
> A captured session can still go stale between setup and the actual run.
> Pair the profile with Vault (`use_vault: true`) so TinyFish can repair an
> expired session instead of failing the run — see [Browser Context Profiles + Vault](https://docs.tinyfish.ai/key-concepts/browser-context-profiles.md).

## Related

> [card] [Browser Context Profiles](https://docs.tinyfish.ai/agent/api/profiles/browser-context-profiles.md)
>
> Create, inspect, and manage saved profiles

> [card] [Why Profiles Exist](https://docs.tinyfish.ai/key-concepts/browser-context-profiles.md)
>
> Per-domain session isolation and the security model


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.