Praxsuite

Datatypes

documentation/core/datatypes

Datatypes

Datatypes are the language Praxsuite uses to store, validate, and connect information. Because Praxsuite is a data-first platform, we need a clear set of rules for what kind of data is being stored and how that data should behave. Datatypes make your system organized, predictable, and scalable. They also give you freedom. By choosing the right datatypes, you can shape simple tables into complex, real-world structures without writing backend code.

Datatypes are the language Praxsuite uses to store, validate, and connect information. Because Praxsuite is a data-first platform, we need a clear set of rules for what kind of data is being stored and how that data should behave. Datatypes make your system organized, predictable, and scalable.

They also give you freedom. By choosing the right datatypes, you can shape simple tables into complex, real-world structures without writing backend code.

In Praxsuite there are two families of datatypes:

  • Primitives: atomic values like text, numbers, dates, and booleans.

  • Relational: datatypes that connect records, users, files, states, or secure data.

Primitive datatypes

Primitive datatypes are the basic building blocks. They describe single values and are used to define the fields inside your tables.

Short Text (255 chars)

For short strings and labels.

Use it for: names, titles, codes, categories.
Example:

  • Client Name: "Acme Corp"

  • Vehicle Plate: "BK-PL-92"

Long Text (10,000 chars)

For content that needs more space.

Use it for: descriptions, notes, comments, internal documentation.
Example:

  • Ticket Description: "Customer reports intermittent outage..."

Email (validated with @)

A text field with built-in email validation.

Use it for: user emails, contact fields, login identifiers.
Example:

  • Billing Email: "finance@company.com"

For an email address to be accepted, it must contain an “@” symbol and a valid domain extension, such as .com, .cl, .edu, .io, etc.

Phone

A structured phone field (formatted/validated depending on config).

Use it for: contact numbers, support lines, WhatsApp-ready contacts.
Example:

  • Contact Phone: "+56 9 7777 8888"

Tags

Tags are short, indexable labels meant for grouping and fast filtering. Unlike text, tags are treated as categorical identifiers, not free-form writing.

Use it for: segmentation, quick classification, search and analytics.
Example:

  • Client Tags: ["VIP", "Retail", "North Zone"]
    Then you can filter clients by tag instantly.

Number

A general numeric field that supports decimals.

Use it for: measurements, amounts, scores, quantities.
Example:

  • Weight: 72.5

  • Rating: 4.7

Integer

Whole numbers only.

Use it for: counts, units, ranking positions.
Example:

  • Units Sold: 12

Big Integer

Whole numbers with very large precision.

Use it for: large counters, external IDs, high-scale numbering.
Example:

  • Invoice Sequential ID: 9000000000123

Decimal

Floating-point numbers with explicit precision.

Use it for: values where rounding matters (finance, science).
Example:

  • Exchange Rate: 942.3761

Currency

A number formatted and treated as money.

Use it for: prices, costs, budgets, payments.
Example:

  • Monthly Subscription: $15.00

Percentage

A number displayed as a percent and often constrained between 0 and 100.

Use it for: discounts, completion rates, KPIs.
Example:

  • Project Progress: 65%

  • Discount: 10%

Date

Calendar date without time.

Use it for: birthdays, deadlines, due dates, milestones.
Example:

  • Contract Start Date: 2025-01-15

Date & Time (with milliseconds)

A timestamp including hour/minute/second and milliseconds.

Use it for: logs, events, scheduling, audit trails.
Example:

  • Payment Received At: 2025-01-15 14:02:33.125

Period (start date to end date)

Represents a time interval.

Use it for: bookings, projects, subscriptions, vacations.
Example:

  • Rental Period: 2025-01-01 to 2025-01-10

Boolean

True or false.

Use it for: on/off switches, flags, eligibility checks.
Example:

  • Is Active: true

  • Has Signed Contract: false

GUID

A globally unique identifier value.

Use it for: integrations, syncing external systems, immutable IDs.
Example:

  • External CRM ID: "550e8400-e29b-41d4-a716-446655440000"

Note: Every record in Praxsuite already has its own internal immutable ID. GUID is only needed when you want to store an additional external identifier.

Relational datatypes

Relational datatypes are used when a field should reference something beyond a simple value, such as another record, a file, a user, or a system-level object. These datatypes are what turn separate tables into a real operational graph.

Status

A state-machine datatype that defines valid stages in a flow or funnel.

Use it for: workflows, approvals, pipelines, lifecycles.
Example:
A Sales Pipeline Status could be:

  • Lead

  • Qualified

  • Proposal Sent

  • Won

  • Lost

This lets you build reliable processes where data moves through controlled states.

Files

A field that attaches one or more files to a record.

Use it for: documents, images, PDFs, contracts, evidence, media.
Example:

  • Client Contract (Files): [contract.pdf]

  • Vehicle Photos (Files): [front.jpg, side.jpg]

EndUser

A reference to an end-user (your customer) synced through Praxsuite Community or customer-facing systems.

Use it for: linking operational data to real customers.
Example:

  • An Order record references the EndUser who placed it.
    This connects back-office operations to customer identity.

System User

A reference to an internal/admin user in your workspace.

Use it for: ownership, responsibility, approvals, assignment.
Example:

  • Assigned Manager (System User): Vincent Depassier

  • Approved By (System User): Finance Team

AI Agents

A reference to an AI Agent connected to a record.

Use it for: automation assistants, reasoning agents, task handlers.
Example:

  • A Support Ticket can reference an AI Agent that helps classify or draft responses.

  • A Project can reference an AI Agent that monitors progress.

Table (relation to another table)

A relationship field that links a record to another record in a different table.

This is the “great sauce” of Praxsuite: it lets you build interconnected systems like a real relational database, but visually.

Use it for: any real-world relationship.
Examples:

  • Tasks -> Project (each task belongs to a project)

  • Invoices -> Client

  • Vehicles -> Fleet

  • Employees -> Department

Once linked, relationships power filters, dashboards, automations, and APIs.

Secrets

Encrypted fields for sensitive values.

Use it for: passwords, tokens, API keys, private credentials.
Example:

  • Stripe Secret Key

  • SMTP Password

Secrets are stored encrypted and only surfaced to authorized users and secure system operations.

Why Datatypes matter

Datatypes do three critical jobs in Praxsuite:

  1. They keep data clean and consistent
    Validation prevents broken systems and messy operations.

  2. They make tables smarter than spreadsheets
    Status, relations, files, users, and secrets build “real backend behavior” into your data.

  3. They unlock scalable processes
    Once your datatypes are right, workflows and automations become reliable because they are grounded in structured data.