diff --git a/src/main/java/de/towerdefence/server/match/GameSession.java b/src/main/java/de/towerdefence/server/match/GameSession.java
index 050ed31..9bea44c 100644
--- a/src/main/java/de/towerdefence/server/match/GameSession.java
+++ b/src/main/java/de/towerdefence/server/match/GameSession.java
@@ -1,5 +1,6 @@
 package de.towerdefence.server.match;
 
+import de.towerdefence.server.match.callbacks.PlayerHitpointsCallback;
 import de.towerdefence.server.match.callbacks.PlayerMoneyCallback;
 import de.towerdefence.server.match.exeptions.InvalidPlacementException;
 import de.towerdefence.server.match.exeptions.InvalidPlacementReason;
@@ -7,6 +8,7 @@ import de.towerdefence.server.player.Player;
 import lombok.Getter;
 
 public class GameSession {
+    final static int START_HITPOINTS = 100;
     final static int START_MONEY = 50;
     final static int MAP_SIZE_X = 10;
     final static int MAP_SIZE_Y = 20;
@@ -16,12 +18,18 @@ public class GameSession {
     private final Player player;
     @Getter
     private int money;
+    @Getter
+    private int playerHitpoints;
     private final PlayerMoneyCallback moneyCallback;
+    //private final PlayerHitpointsCallback hitpointsCallback;
 
     public GameSession(Player player, PlayerMoneyCallback moneyCallback) {
         this.player = player;
         this.moneyCallback = moneyCallback;
+        //this.hitpointsCallback = hitpointsCallback;
         this.money = START_MONEY;
+        this.playerHitpoints = START_HITPOINTS;
+
     }
 
     public void placeTower(Tower tower, int x, int y) throws InvalidPlacementException {
@@ -41,5 +49,6 @@ public class GameSession {
 
     public void addMoney(int amount) {
         money += amount;
+        moneyCallback.call(player, money);
     }
 }
diff --git a/src/main/java/de/towerdefence/server/match/Match.java b/src/main/java/de/towerdefence/server/match/Match.java
index fb4ff50..959592a 100644
--- a/src/main/java/de/towerdefence/server/match/Match.java
+++ b/src/main/java/de/towerdefence/server/match/Match.java
@@ -1,5 +1,6 @@
 package de.towerdefence.server.match;
 
+import de.towerdefence.server.match.callbacks.PlayerHitpointsCallback;
 import de.towerdefence.server.match.callbacks.PlayerMoneyCallback;
 import de.towerdefence.server.player.Player;
 import lombok.Getter;
@@ -47,7 +48,11 @@ public class Match {
 
     }
 
-    public void connectPlayer(Player player, PlayerMoneyCallback moneyCallback) {
+    public void connectPlayer(
+        Player player,
+        PlayerMoneyCallback moneyCallback,
+        PlayerHitpointsCallback hitpointsCallback
+    ) {
         boolean isPlayer1 = player1.equals(player);
         boolean isPlayer2 = player2.equals(player);
         if (!isPlayer1 && !isPlayer2) {
diff --git a/src/main/java/de/towerdefence/server/match/MatchService.java b/src/main/java/de/towerdefence/server/match/MatchService.java
index dacb7d9..a337e29 100644
--- a/src/main/java/de/towerdefence/server/match/MatchService.java
+++ b/src/main/java/de/towerdefence/server/match/MatchService.java
@@ -1,5 +1,6 @@
 package de.towerdefence.server.match;
 
+import de.towerdefence.server.match.callbacks.PlayerHitpointsCallback;
 import de.towerdefence.server.match.callbacks.PlayerMoneyCallback;
 import de.towerdefence.server.match.exeptions.InvalidPlacementException;
 import de.towerdefence.server.match.exeptions.InvalidPlacementReason;
@@ -48,15 +49,20 @@ public class MatchService {
         return opponent.get();
     }
 
-    public void playerConnected(Player player, PlayerMoneyCallback moneyCallback) {
+    public void playerConnected(
+        Player player,
+        PlayerMoneyCallback moneyCallback,
+        PlayerHitpointsCallback hitpointsCallback
+    ) {
         Match match = playerMatches.get(player);
-        match.connectPlayer(player, moneyCallback);
+        match.connectPlayer(player, moneyCallback, hitpointsCallback);
         Optional<GameSession> optionalPlayerSession = match.getPlayerGameSession(player);
         if (optionalPlayerSession.isEmpty()) {
             return;
         }
         GameSession playerSession = optionalPlayerSession.get();
         moneyCallback.call(player, playerSession.getMoney());
+        hitpointsCallback.call(player, playerSession.getPlayerHitpoints() );
         if (!match.hasMatchStarted()) {
             return;
         }
diff --git a/src/main/java/de/towerdefence/server/match/callbacks/PlayerHitpointsCallback.java b/src/main/java/de/towerdefence/server/match/callbacks/PlayerHitpointsCallback.java
new file mode 100644
index 0000000..ed1e959
--- /dev/null
+++ b/src/main/java/de/towerdefence/server/match/callbacks/PlayerHitpointsCallback.java
@@ -0,0 +1,8 @@
+package de.towerdefence.server.match.callbacks;
+
+import de.towerdefence.server.player.Player;
+
+@FunctionalInterface
+public interface PlayerHitpointsCallback {
+    void call(Player player, int playerHitpoints);
+}
diff --git a/src/main/java/de/towerdefence/server/server/channels/match/MatchWebsocketHandler.java b/src/main/java/de/towerdefence/server/server/channels/match/MatchWebsocketHandler.java
index f9e48a0..bc64f77 100644
--- a/src/main/java/de/towerdefence/server/server/channels/match/MatchWebsocketHandler.java
+++ b/src/main/java/de/towerdefence/server/server/channels/match/MatchWebsocketHandler.java
@@ -6,6 +6,7 @@ import de.towerdefence.server.match.exeptions.InvalidPlacementException;
 import de.towerdefence.server.match.exeptions.NotInMatchException;
 import de.towerdefence.server.player.Player;
 import de.towerdefence.server.server.JsonWebsocketHandler;
+import de.towerdefence.server.server.channels.match.hitpoints.PlayerHitpointsMessage;
 import de.towerdefence.server.server.channels.match.money.PlayerMoneyMessage;
 import de.towerdefence.server.server.channels.match.placing.GamePlayerMap;
 import de.towerdefence.server.server.channels.match.placing.InvalidPlacementMessage;
@@ -37,7 +38,11 @@ public class MatchWebsocketHandler extends JsonWebsocketHandler {
     public void afterConnectionEstablished(WebSocketSession session) {
         super.afterConnectionEstablished(session);
         playerSessions.put(sessionPlayers.get(session), session);
-        matchService.playerConnected(sessionPlayers.get(session), this::onPlayerMoneyChanged);
+        matchService.playerConnected(
+            sessionPlayers.get(session),
+            this::onPlayerMoneyChanged,
+            this::onPlayerHitpointsChanged
+        );
     }
 
     private void onPlayerMoneyChanged(Player player, int playerMoney) {
@@ -48,6 +53,14 @@ public class MatchWebsocketHandler extends JsonWebsocketHandler {
         }
     }
 
+    private void onPlayerHitpointsChanged(Player player, int playerHitpoints) {
+        WebSocketSession session = playerSessions.get(player);
+        try {
+            new PlayerHitpointsMessage(playerHitpoints).send(session);
+        } catch (IOException ignored) {
+        }
+    }
+
     @Override
     protected void closeSession(WebSocketSession session, CloseStatus reason) {
         Player player = sessionPlayers.get(session);
diff --git a/src/main/java/de/towerdefence/server/server/channels/match/PlayerMoneyMessage.java b/src/main/java/de/towerdefence/server/server/channels/match/hitpoints/PlayerHitpointsMessage.java
similarity index 61%
rename from src/main/java/de/towerdefence/server/server/channels/match/PlayerMoneyMessage.java
rename to src/main/java/de/towerdefence/server/server/channels/match/hitpoints/PlayerHitpointsMessage.java
index cc7428f..a5921c9 100644
--- a/src/main/java/de/towerdefence/server/server/channels/match/PlayerMoneyMessage.java
+++ b/src/main/java/de/towerdefence/server/server/channels/match/hitpoints/PlayerHitpointsMessage.java
@@ -1,4 +1,4 @@
-package de.towerdefence.server.server.channels.match;
+package de.towerdefence.server.server.channels.match.hitpoints;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
@@ -8,19 +8,18 @@ import lombok.AllArgsConstructor;
 import java.util.Map;
 
 @AllArgsConstructor
-public class PlayerMoneyMessage extends JsonMessage {
-
-    private final int playerMoney;
+public class PlayerHitpointsMessage extends JsonMessage {
 
+    private final int playerHitpoints;
     @Override
     protected String getMessageId() {
-        return "PlayerMoney";
+        return "PlayerHitpoints";
     }
 
     @Override
     protected Map<String, JsonNode> getData(JsonNodeFactory factory) {
         return Map.of(
-            "playerMoney", factory.numberNode(this.playerMoney)
+            "playerHitpoints", factory.numberNode(this.playerHitpoints)
         );
     }
 }
diff --git a/ws/ws.yml b/ws/ws.yml
index 138364a..2ac309b 100644
--- a/ws/ws.yml
+++ b/ws/ws.yml
@@ -239,6 +239,21 @@ channels:
           required:
             - $id
             - playerMoney
+      PlayerHitpoints:
+        description: Hitpoints a player currently has
+        payload:
+          type: object
+          additionalProperties: false
+          properties:
+            $id:
+              type: string
+              format: messageId
+            playerHitpoints:
+              type: integer
+          required:
+            - $id
+            - playerHitpoints
+
 
 
 operations:
@@ -321,6 +336,13 @@ operations:
       $ref: "#/channels/match"
     messages:
       - $ref: "#/channels/match/messages/PlayerMoney"
+  playerHitpoints:
+    title: PlayerHitpoints
+    action: receive
+    channel:
+      $ref: "#/channels/match"
+    messages:
+      - $ref: "#/channels/match/messages/PlayerHitpoints"