PHPackages                             genai/google-form - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. genai/google-form

ActiveLibrary[HTTP &amp; Networking](/categories/http)

genai/google-form
=================

Submit data to a Google Form from the server: POST to the form's formResponse endpoint, mapping your fields to entry.NNN ids. Best-effort with a short timeout so it never blocks the request (it returns false rather than throwing). curl with a stream fallback. PHP 5.3-safe.

v1.0.1(1mo ago)074↓60.4%Apache-2.0PHPPHP &gt;=5.3.0CI passing

Since Jul 3Pushed 1mo agoCompare

[ Source](https://github.com/GenAIIO/php-google-form)[ Packagist](https://packagist.org/packages/genai/google-form)[ RSS](/packages/genai-google-form/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)DependenciesVersions (3)Used By (0)

genai/google-form
=================

[](#genaigoogle-form)

Submit data to a Google Form **from the server** — no front-end JS, no Apps Script. POSTs to the form's `formResponse` endpoint with your fields mapped to `entry.NNN` ids.

Use
---

[](#use)

```
$form = new GenAI\GoogleForm\GoogleForm($formId, array(
    'name'  => 'entry.111111111',
    'email' => 'entry.222222222',
));
$ok = $form->submit(array('name' => 'Linh', 'email' => 'linh@example.com'));
```

`submitRaw(array('entry.111111111' => 'Linh'))` bypasses the map. Array values (checkboxes) are sent as repeated keys.

Get the ids
-----------

[](#get-the-ids)

- **formId**: the `.../forms/d/e//viewform` segment.
- **entry ids**: Form → ⋮ → *Get pre-filled link* → fill samples → copy; the URL has `entry.NNN=...` per field.

Config + wiring
---------------

[](#config--wiring)

```
[googleform]
form_id = "1FAIpQLSf..."
```

```
#[Configuration]
class GoogleFormConfig {
    #[Bean(\GenAI\GoogleForm\GoogleForm::class)]
    public function googleForm(\GenAI\GoogleForm\Bundle\GoogleFormProperty $cfg) {
        return new \GenAI\GoogleForm\GoogleForm($cfg->getFormId(), array(
            'name' => 'entry.111111111', 'email' => 'entry.222222222',
        ));
    }
}
```

`GoogleFormProperty` auto-registers (the package declares `extra.genai.scan`); the field map is form-specific, so it lives in the app's bean.

Behaviour &amp; caveats
-----------------------

[](#behaviour--caveats)

- **Best-effort:** short timeout (default 5s), and it returns `false` (never throws) on a network error or an unset `form_id` — so a failed submit won't break the action that called it (e.g. registration still succeeds).
- **Success isn't strictly verifiable:** Google returns 200 even when it silently rejects a submission (missing required field), so `true` means "sent". Map every required field and confirm once in the form's Responses tab.
- The form must be **public** (no login / not "limit to 1 response").
- It blocks for up to the timeout; lower it, or move the call to a shutdown hook, if you don't want registration to wait.

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance90

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity30

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

2

Last Release

47d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/25e5bd31b5dd70d47cbdc738bded06dbabfba3d584acce63c2c4b4fb7847f39d?d=identicon)[jinnguyen](/maintainers/jinnguyen)

---

Top Contributors

[![linhnnmt](https://avatars.githubusercontent.com/u/162856460?v=4)](https://github.com/linhnnmt "linhnnmt (7 commits)")

### Embed Badge

![Health badge](/badges/genai-google-form/health.svg)

```
[![Health](https://phpackages.com/badges/genai-google-form/health.svg)](https://phpackages.com/packages/genai-google-form)
```

###  Alternatives

[php-http/cache-plugin

PSR-6 Cache plugin for HTTPlug

25026.8M85](/packages/php-http-cache-plugin)[httpsoft/http-message

Strict and fast implementation of PSR-7 and PSR-17

85997.3k133](/packages/httpsoft-http-message)[thesis/nats

Async (fiber based) client for Nats.

758.3k](/packages/thesis-nats)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
