Documentation Index
Fetch the complete documentation index at: https://usegately.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
The FormEmbed component allows you to embed Gately forms directly in your website.
Basic Usage
JavaScript
Gately.embedForm('FORM_ID', {
container: '#form-container'
})
React
import { FormEmbed } from '@gately/sdk'
function ContactPage() {
return (
<div>
<h1>Contact Us</h1>
<FormEmbed formId="FORM_ID" />
</div>
)
}
Options
interface FormEmbedOptions {
container?: string | HTMLElement // Container element or selector
onSubmit?: (data: FormData) => void // Called on successful submission
onError?: (error: Error) => void // Called on error
onLoad?: () => void // Called when form loads
styles?: FormStyles // Custom styling
prefill?: Record<string, any> // Pre-fill field values
}
Event Handlers
On Submit
Gately.embedForm('FORM_ID', {
container: '#form',
onSubmit: (data) => {
console.log('Form submitted:', data)
// Show success message
document.getElementById('form').innerHTML = `
<div class="success">
<h2>Thank you!</h2>
<p>We'll be in touch soon.</p>
</div>
`
}
})
On Error
Gately.embedForm('FORM_ID', {
container: '#form',
onError: (error) => {
console.error('Form error:', error)
alert('Something went wrong. Please try again.')
}
})
On Load
Gately.embedForm('FORM_ID', {
container: '#form',
onLoad: () => {
// Hide loading spinner
document.getElementById('loading').style.display = 'none'
}
})
Custom Styling
Gately.embedForm('FORM_ID', {
container: '#form',
styles: {
fontFamily: 'Inter, sans-serif',
fontSize: '16px',
primaryColor: '#F97316',
backgroundColor: '#ffffff',
textColor: '#111827',
borderRadius: '8px',
borderColor: '#e5e7eb',
inputPadding: '12px',
buttonStyle: 'filled' // 'filled' | 'outline'
}
})
Pre-fill Fields
// Pre-fill from URL params
const params = new URLSearchParams(window.location.search)
Gately.embedForm('FORM_ID', {
container: '#form',
prefill: {
email: params.get('email'),
name: params.get('name'),
plan: 'pro'
}
})
Pre-fill for Logged-in Users
const user = Gately.getUser()
Gately.embedForm('FORM_ID', {
container: '#form',
prefill: user ? {
email: user.email,
name: user.full_name
} : {}
})
React Component
Basic
import { FormEmbed } from '@gately/sdk'
function ContactForm() {
return (
<FormEmbed
formId="FORM_ID"
onSubmit={(data) => console.log('Submitted:', data)}
onError={(error) => console.error('Error:', error)}
/>
)
}
With Custom Styling
<FormEmbed
formId="FORM_ID"
styles={{
fontFamily: 'system-ui',
primaryColor: '#6366f1',
borderRadius: '12px'
}}
/>
With Loading State
function ContactForm() {
const [loading, setLoading] = useState(true)
return (
<div>
{loading && <Spinner />}
<FormEmbed
formId="FORM_ID"
onLoad={() => setLoading(false)}
style={{ display: loading ? 'none' : 'block' }}
/>
</div>
)
}
iFrame Embed
For complete isolation, use an iFrame:
<iframe
src="https://forms.usegately.com/f/FORM_ID"
width="100%"
height="600"
frameborder="0"
style="border: none;"
></iframe>
Responsive iFrame
<div style="position: relative; padding-bottom: 75%; height: 0; overflow: hidden;">
<iframe
src="https://forms.usegately.com/f/FORM_ID"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;"
></iframe>
</div>
File Uploads
Forms with file fields handle uploads automatically:
Gately.embedForm('FORM_ID', {
container: '#form',
onSubmit: (data) => {
// File URLs are included in the response
console.log('Uploaded files:', data.files)
}
})
For forms with payment fields:
Gately.embedForm('FORM_ID', {
container: '#form',
onSubmit: (data) => {
if (data.payment) {
console.log('Payment ID:', data.payment.id)
console.log('Amount:', data.payment.amount)
}
}
})
Multi-step forms are handled automatically. Track progress:
Gately.embedForm('FORM_ID', {
container: '#form',
onStepChange: (step, totalSteps) => {
console.log(`Step ${step} of ${totalSteps}`)
updateProgressBar(step / totalSteps)
}
})
Validation
Client-side validation is built-in. Customize error messages:
Gately.embedForm('FORM_ID', {
container: '#form',
validationMessages: {
required: 'This field is required',
email: 'Please enter a valid email',
minLength: 'Must be at least {min} characters'
}
})
Accessibility
Forms are accessible by default:
- Proper ARIA labels
- Keyboard navigation
- Screen reader support
- Focus management