Objetos personalizados
También en 28 idiomas
English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Français (Canada) · Deutsch (Schweiz)

Módulo 3 de 10 del capítulo Arquitectura de datos de Salesforce, el tercer capítulo del curso Data Architect. Cada módulo se sostiene por sí solo. Anterior: Mira a la nave nodriza: los modelos de datos estándar · Siguiente: ¿Dónde viven estos datos?
La pregunta que responde este módulo: Cuando Salesforce no lo tiene, ¿qué obtienes realmente cuando construyes tu propio objeto?
En el módulo anterior vimos lo que Salesforce ya construyó. A veces no tiene lo que necesitas. Steve Trucking opera camiones, y no hay un objeto estándar Truck. Así que construyes uno: un objeto personalizado.
Esto es lo que quiero que veas en este módulo. Un objeto personalizado se crea en metadatos, como todo lo demás del módulo 1, y en el momento en que existe viene con un conjunto de funcionalidad estándar. No es una tabla en blanco. Y la pantalla que llenas para crearlo te está haciendo preguntas de arquitectura, te des cuenta o no.
La pantalla Nuevo objeto personalizado
Sección titulada «La pantalla Nuevo objeto personalizado »Ve a Setup → Object Manager → Create → Custom Object (Configuración → Gestor de objetos → Crear → Objeto personalizado) y te aparece un formulario largo. La mayoría llena las dos primeras casillas y hace clic en Guardar. Vamos a ir más despacio y a leerlo.
Label y Plural Label (etiqueta y etiqueta plural). “Truck” y “Trucks”. Es lo que ven los usuarios, en pestañas, formatos de página e informes. Puedes cambiarlas después sin mucho dolor.
Object Name (nombre del objeto). Este es distinto: es el nombre de API, el nombre que usan el código, las integraciones, los informes y ahora los agentes. Escribe “Truck” y Salesforce lo convierte en Truck__c. Cambiarlo después significa encontrar todo lo que se refiere a él, que es otra vez la Prueba de Reversibilidad del capítulo 1. Acierta con este a la primera.
Description (descripción). Llénala. Siempre. En el módulo 1 dije que los metadatos ya no son decoración: el siguiente administrador lee esto, y también cada herramienta de IA que intenta entender tu organización. Un objeto personalizado con la descripción vacía es una caja sin etiqueta.
Record Name (nombre de registro). Cada objeto personalizado tiene un campo Name, y aquí decides qué es. Un nombre de texto, como “Truck 117”, o una numeración automática, como T-000184, que Salesforce llena por ti. Lee la advertencia de esa pantalla: si piensas insertar un gran volumen de registros a través de la API, Salesforce te dice que uses texto. Es la plataforma diciéndote algo sobre la escala antes de que hayas creado un solo registro.

Setup de Salesforce, New Custom Object: la sección Record Name, con su advertencia (captura de pantalla, 2026-10-12). Tamaño completo
Optional Features (funciones opcionales). Allow Reports, Allow Activities, Track Field History, Allow in Chatter Groups. Desactivadas de forma predeterminada. Cada una es una capacidad que activas para este objeto; decide a propósito.
Object Classification (clasificación del objeto). Allow Sharing, Allow Bulk API Access, Allow Streaming API Access, todas activadas de forma predeterminada. La pantalla lo dice claramente: con ellas activadas, el objeto es un objeto Enterprise Application; con ellas desactivadas, es un objeto Light Application. Esos nombres coinciden con las licencias de suscripción a aplicaciones de Salesforce: una Lightning Platform Light App no tiene uso compartido a nivel de registro y no puede usar la Bulk API ni la Streaming API, y una Enterprise App sí puede. Mi consejo: déjalas activadas a menos que sepas exactamente por qué no. Desactiva el acceso a la Bulk API en un objeto que más adelante vas a cargar en volumen, y descubrirás por qué importaba.
Deployment Status y Search (estado de implementación y búsqueda). “In Development” oculta el objeto a los usuarios mientras lo construyes; “Deployed” lo pone en marcha. Y Allow Search está desactivada de forma predeterminada, así que los usuarios no encontrarán estos registros en la búsqueda global hasta que la actives. Esa atrapa a la gente cada vez.

Los valores predeterminados: las tres opciones de API activadas, Deployed, y Allow Search desactivada (captura de pantalla, 2026-10-12). Tamaño completo
Haz clic en Guardar, y el Gestor de objetos te muestra el objeto: el nombre de API Truck__c, una marca en Custom, las etiquetas, el estado de implementación. Pero mira la columna de la izquierda: Fields & Relationships, Page Layouts, Lightning Record Pages, Record Types, Validation Rules, Triggers, Flow Triggers, Object Access, Field Access. Esa lista es el módulo 1 hecho visible. Un objeto no es solo almacenamiento; es el lugar del que cuelga todo ese comportamiento.

Gestor de objetos, Truck: el nombre de API Truck__c, Custom y todo lo que cuelga de un objeto (captura de pantalla, 2026-10-12). Tamaño completo
Los campos que no creaste
Sección titulada «Los campos que no creaste »Abre Fields & Relationships en un objeto personalizado recién creado, y ya tiene campos. Cada objeto personalizado recibe un conjunto estándar:
- Name, el nombre de registro que acabas de elegir, que se usa en formatos de página, listas relacionadas, búsquedas y resultados de búsqueda.
- Owner, el usuario o la cola que es propietario del registro.
- Created By y Last Modified By, los usuarios que lo crearon y lo cambiaron por última vez.
- Currency, si la multidivisa está activada, y Division, si tu organización usa divisiones.
Y por debajo, el ID de registro del módulo 1, y las fechas de creación y de modificación. Exporta unos cuantos registros con Data Loader y los verás todos.
Uno de ellos puede desaparecer. Haz que tu objeto personalizado sea el lado de detalle de una relación principal-detalle, y el campo Owner desaparece: la propiedad viene del registro principal. Es más importante de lo que parece, y volveremos a ello en los módulos 7 y 8.
Prefijos y sufijos: qué estás mirando
Sección titulada «Prefijos y sufijos: qué estás mirando »En el módulo anterior dije que los objetos estándar no tienen prefijo ni sufijo. Todo lo demás sí, y una vez que sabes leerlos, una lista de campos te dice exactamente qué estás mirando.
| Cómo se ve | Qué es |
|---|---|
Account, Case | Un objeto o campo estándar: sin prefijo, sin sufijo |
Truck__c | Un objeto personalizado, o un campo personalizado, como Unit_Number__c |
abc__Inspection__c | Un objeto personalizado de un paquete gestionado: abc es el espacio de nombres del proveedor |
Delivery_History__b | Un objeto grande (big object) (módulo 4) |
Shipment__x | Un objeto externo: los datos viven en otro sistema (módulo 4) |
Allergies__pc | Un campo personalizado de contacto en una cuenta personal (módulo 2) |
Truck__r | La relación detrás de una búsqueda personalizada, cuando la sigues en una consulta |
Algunas cosas en las que fijarse.
Hasta aquí es una lista. Así es como yo lo enseño: por capas. Hay tres tipos de objeto, estándar, personalizado y de paquete gestionado, y cada uno de ellos puede tener los mismos tipos de campo: los campos estándar con los que vino y los campos personalizados que alguien agregó.
Objetos estándar. Account no tiene prefijo ni sufijo, y tampoco sus campos estándar: Name, Industry, OwnerId. Puedes agregar campos personalizados a la mayoría de los objetos estándar, y cada uno que agregas termina en __c: Region__c (Custom Fields (opens in a new tab), en inglés). Ese sufijo es lo que te protege. Salesforce agrega campos estándar nuevos a la cuenta en sus versiones, y como los tuyos siempre terminan en __c y los suyos nunca, un futuro campo estándar nunca puede chocar con un campo que ya tienes.
Objetos personalizados. Tu propio objeto termina en __c, Truck__c (Custom Objects (opens in a new tab), en inglés), y también los campos personalizados que le pones: Unit_Number__c. Pero los campos con los que nació, los de la sección anterior, son campos estándar: Name, OwnerId, CreatedDate, sin sufijo. Así que incluso en tu propio objeto, el sufijo te dice quién hizo cada campo.
Objetos de paquetes gestionados. Cuando instalas un paquete gestionado desde AppExchange, sus objetos y campos vienen con el prefijo de espacio de nombres del proveedor: abc__Inspection__c, y campos como abc__Result__c. Ese prefijo es único del proveedor y no cambia (Namespace Prefix (opens in a new tab), en inglés). En palabras de Salesforce, el prefijo se agrega a cada componente para hacerlo único: name__c se convierte en prefix__name__c (AppExchange Object Prefixes and the API (opens in a new tab), en inglés). Así que dos proveedores pueden distribuir un objeto llamado Invoice__c y nunca chocar entre sí, ni contigo. Los objetos del paquete siguen teniendo sus campos estándar, Name y OwnerId, sin prefijo. Un paquete también puede agregar sus propios campos con prefijo a los objetos estándar, como abc__Score__c en la cuenta. Y tú puedes agregar tus propios campos personalizados a los objetos de un paquete: Depot__c en abc__Inspection__c lleva tu sufijo __c, pero nunca el prefijo del proveedor, porque lo hiciste tú, no ellos (Known Issue: unmanaged custom field on a managed package object (opens in a new tab), en inglés).
Lee cualquier nombre de API y sabes quién lo hizo. Sin sufijo: Salesforce. __c sin prefijo: tu organización. abc__ delante: el proveedor. Eso importa cada vez que planificas un cambio. Lo que es tuyo, lo puedes cambiar. Lo que es de Salesforce, lo configuras y lo extiendes. Lo que es del proveedor está casi todo bloqueado: algunas cosas, como los formatos de página y el texto de ayuda, puedes editarlas, pero la mayor parte del paquete, y cada nombre de API, pertenece al proveedor, y sus actualizaciones traen sus cambios (Editable Properties After Package Promotion or Installation (opens in a new tab), en inglés).
Los paquetes no gestionados, no. Instala un paquete no gestionado y sus objetos aterrizan en tu organización como si los hubieras construido tú, sin prefijo. Si trae un Truck__c y ya tienes uno, tienes una colisión de nombres. Revísalo antes de instalar.
Construye solo lo que Salesforce no tiene
Sección titulada «Construye solo lo que Salesforce no tiene »Crear un objeto personalizado es fácil; precisamente por eso creo que creamos demasiados. La pantalla Nuevo objeto personalizado te hará encantada un Customer__c en una organización que ya tiene la cuenta. Así que antes de hacer clic, hazte la pregunta del módulo anterior: ¿la nave nodriza ya tiene esto? Si lo tiene, úsalo. Si no, constrúyelo, y llena toda la pantalla como un arquitecto.
El siguiente módulo hace una pregunta todavía anterior: ¿deberían estar estos datos en Salesforce siquiera?
Lo que decide aquí un arquitecto
Sección titulada «Lo que decide aquí un arquitecto »- Si Salesforce ya tiene un objeto estándar para esto, antes de construir uno personalizado.
- El nombre de API, elegido una sola vez, y una descripción escrita para las personas y para las máquinas.
- El nombre de registro: texto o numeración automática, pensando en el volumen que esperas.
- Qué funciones opcionales, acceso por API y búsqueda activar, a propósito.
- Lo que te dicen los sufijos de una organización: personalizado, gestionado, grande, externo, cuenta personal.
- Si un paquete que estás a punto de instalar podría chocar con lo que has construido.
Explora
Sección titulada «Explora »- Custom Objects (opens in a new tab) y Custom Fields (opens in a new tab), Object Reference (en inglés, consultado el 2026-10-13): los nombres de los objetos personalizados llevan un sufijo de dos guiones bajos seguidos de una “c” minúscula; lo mismo para los campos personalizados; y la tabla de objetos estándar que admiten campos personalizados.
- AppExchange Object Prefixes and the API (opens in a new tab), Object Reference (en inglés, consultado el 2026-10-13): un prefijo de espacio de nombres hace único cada componente empaquetado; “name__c becomes prefix__name__c”.
- Namespace Prefix (opens in a new tab), Apex Developer Guide (en inglés, consultado el 2026-10-13): los prefijos de espacio de nombres mantienen los nombres de objetos y campos de los paquetes gestionados separados de los de otras organizaciones.
- Editable Properties After Package Promotion or Installation (opens in a new tab), Second-Generation Managed Packaging Developer Guide (en inglés, consultado el 2026-10-13): qué propiedades de los componentes de un paquete puede editar el desarrollador, el suscriptor, ambos o ninguno.
- Custom Object Standard Fields (opens in a new tab), Ayuda de Salesforce (en inglés, consultado el 2026-10-12): los campos estándar que recibe cada objeto personalizado (Name, Owner, Created By, Last Modified By, Currency, Division), y por qué se quita Owner en el lado de detalle de una relación principal-detalle.
- Standard User Licenses (opens in a new tab), Ayuda de Salesforce (en inglés, consultado el 2026-10-12): una Lightning Platform Light App “can’t use the Bulk API or Streaming API”; una Enterprise App “supports record-level sharing, can use the Bulk API and Streaming API.”
