# Present Your First Paywall

Learn how to present paywalls in your app.

Placements [#placements]

With Superwall, you present paywalls by registering a [Placement](/docs/dashboard/dashboard-campaigns/campaigns-placements). Placements are the configurable entry points to show (or not show) paywalls based on your [Campaigns](/docs/dashboard/dashboard-campaigns/campaigns) as setup in your Superwall dashboard.

The placement `campaign_trigger` is set to show an example paywall by default.

Usage [#usage]

The [`usePlacement`](/docs/expo/sdk-reference/hooks/usePlacement) hook allows you to register placements that you've configured in your Superwall dashboard.
The hook returns a `registerPlacement` function that you can use to register a placement.

```tsx
import { usePlacement, useUser } from "expo-superwall";
import { Alert, Button, Text, View } from "react-native";

function PaywallScreen() {
  const { registerPlacement, state: placementState } = usePlacement({
    onError: (err) => console.error("Placement Error:", err),
    onPresent: (info) => console.log("Paywall Presented:", info),
    onDismiss: (info, result) =>
      console.log("Paywall Dismissed:", info, "Result:", result),
  });

  const handleTriggerPlacement = async () => {
    await registerPlacement({
      placement: "campaign_trigger"
    });
  };

  return (
    <View style={{ padding: 20 }}>
      <Button title="Show Paywall" onPress={handleTriggerPlacement} />
      {placementState && (
        <Text>Last Paywall Result: {JSON.stringify(placementState)}</Text>
      )}
    </View>
  );
}
```